背景 && 摘要

尽管 windows 下已经有多种非官方的途径提供 SSH 远程访问功能, 但无论如何,都感觉颇为鸡肋.近些年,微软已经有拥抱 Linux 的趋势,并意识到了 SSH 的重要, 官方开始在 OpenSSH 的基础上提供 Windows 可用的 SSH 工具. 微软官方提供的 OpenSSH 地址在这里 PowerShell/Win32-OpenSSH, 访问此地址下载最新编译好的发行版本. 在本文我将说明如何在 Windows 下安装 OpenSSH.

环境

Windows 10 x64

OpenSSH 的安装

在开始之前,我们需要知道两个东西:powershell 和 cmd.如果不知道的请自行查找. 此外,powershell 和 cmd 都是以管理员权限打开运行.我们可以鼠标邮件这些程序, 然后选择以管理员运行,但是这稍显麻烦.一个比较快捷的方式是按下 Windows 键, 然后输入 powershell 或者 cmd ,然后按下 ctrl+shift+enter ,就可以以管理员权限运行这些工具. 好的,现在我们开始.

下载 OpenSSH

这里下载release版本的 OpenSSH. 下载后解压到 C:\Program Files\OpenSSH,解压后 OpenSSH 目录下面有这些东西(仅仅列出了一部分):

-a----       2017/10/17     21:10        1462907 libcrypto-41.dll
-a----       2017/10/17     21:10           1053 OpenSSHUtils.psd1
-a----       2017/10/17     21:10          27831 OpenSSHUtils.psm1
-a----       2017/10/17     21:10         329728 scp.exe
-a----       2017/10/17     21:10         346624 sftp-server.exe
-a----       2017/10/17     21:10         397824 sftp.exe
-a----       2017/10/17     21:10         528384 ssh-add.exe
-a----       2017/10/17     21:10         620032 ssh-agent.exe
-a----       2017/10/17     21:10         652288 ssh-keygen.exe
-a----       2017/10/17     21:10         584704 ssh-keyscan.exe
-a----       2017/10/17     21:10         148992 ssh-shellhost.exe
-a----       2017/10/17     21:10         880128 ssh.exe
-a----       2017/10/17     21:10         930304 sshd.exe

注意必须解压到这个目录.在其他目录无法成功.充分证明了,windows 大爷还是 widnows 大爷.

安装

打开 powershell,然后执行如下命令:
cd 'C:\Program Files\OpenSSH'
powershell -ExecutionPolicy Bypass -File install-sshd.ps1

本地秘钥生成

.\ssh-keygen.exe -A
.\FixHostFilePermissions.ps1 -Confirm:$false

如果提示由于签名问题,脚本无法执行用下面命令修复签名问题 set-executionpolicy remotesigned

添加秘钥(可选)

Start-Service ssh-agent
ssh-add ssh_private_key

其中 ssh_private_key 是你的远程登录秘钥.结合 config 文件会更好, 稍后会提到.

打开 22 端口

如果 22 端口没有打开,可以通过如下命令打开:

服务器端可以尝试:
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
桌面版本可以尝试:
netsh advfirewall firewall add rule name=SSHPort dir=in action=allow protocol=TCP localport=22

设置 ssh 自动启动

Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic

启动 sshd 和 ssh-agent

net start sshd

加到 SSH 工具集到环境变量

打开 cmd,然后执行下面的命令(这条命令在 powershell 中无法执行):

 wmic ENVIRONMENT where "username='' and name='PATH'" set VariableValue="%PATH%;C:\Program Files\OpenSSH" 

执行完这条命令后, ssh 路径就添加到系统变量中去了, 注意,这些命令只允许管理员权限的执行,所以你要执行这些命令,需要以管理员权限打开 cmd 或者 powershell.

配置 SSH Config

打开 powershell,执行: mkdir ~/.ssh,并在 ~/.ssh 目录下放入远程秘钥如 hadoop_rsa, 添加一个 config 文件,注意,名称为 config,没有后缀,位于 ~/.ssh 目录中. Windows 用户可能不知道 ~ 对应与哪个目录. 在 powershell 中执行cd ~ 即可进入到 ~ 目录. 然后在 powershell 中就可以看到 ~ 具体是哪个位置.

打开 ~/.ssh 后输入以下内容:

Host server
    HostName 192.168.56.102
    User server
    Port 22
    IdentityFile ~/.ssh/hadoop_rsa

这里面 Host 后面的 server 名字可以按照你自己的喜好来书写, HostName 后写入服务器 IP 地址, User 写入你在服务器上的用户名,Port 是SSH端口,一般为22,IdentityFile 是登录服务器的秘钥. 这样配置完毕后,重新打开 cmd 或 powershell,然后执行 ssh server 即可登录配置的服务器.

Reference

  1. Install Win32 OpenSSH




Contact me by dXAyZ2Vla0AxNjMuY29tCg==
OR
Follow me on Sinablog

Copyright ©2017 by bugnofree All rights reserved.