Windows 2019/2022安装OpenSSH服务端
由于有些情况下会安装失败,这里记录一个可用(2023年10月)的操作教程。
为什么要安装OpenSSH
远程登到Windows敲命令吗?当然不是了,这不Windows啊!
然而ssh除了可以敲命令,还可以传文件、建隧道。这样就可以靠ssh来补充一些不足了:
- Windows远程桌面上传下载文件速度很慢,而且连接不稳定。FTP需要安装和配置IIS,操作比较麻烦,而且不安全。而SSH容易安装,传文件既快又稳定,而且默认情况下需要本机用户认证才能登录,保证了安全性。
- 如果你熟悉ssh隧道的用法,可以利用ssh来处理Windows的部分端口映射问题,例如将Windows服务器里的端口映射到本地。
先尝试安装自带的OpenSSH(不推荐)
打开PowerShell,输入(大小写无所谓,下同):
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
如果报错,直接看本文最后面的内容。如果没报错,继续执行:
Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic
Start-Service sshd
Start-Service ssh-agent
# 检查SSH服务是否正常启动
Get-Service -Name *ssh* | select DisplayName, Status, StartType
# 检查防火墙规则,如果未放行,需要到“高级安全Windows防火墙”中放行22端口
Get-NetFirewallRule -Name *SSH*
如果安装失败了(推荐)
有时候Windows 2019安装OpenSSH会出错,而且无论如何都会失败。遇到这种情况,不要气馁,也没必要浪费时间去排查原因,直接去GitHub上下载个新版本就可以了。
下载地址:https://github.com/PowerShell/Win32-OpenSSH/releases
安装完成后记得在“服务”中将SSH设置为自动启动,并且在“高级安全Windows防火墙”的“入站规则”中开放服务器的22端口。
其他配置
防火墙规则
除了在“高级安全Windows防火墙”配置,也可以使用以下PowerShell命令来添加规则:
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
允许免密(公钥)登录
修改C:\ProgramData\ssh\sshd_config
文件,找到下面两行内容
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
把这两行删掉,或者用#
注释掉。
再创建C:\Users\你的用户名\.ssh\authorized_keys
文件,将你的电脑的公钥写到里面,例如:
ssh-rsa AAAAB3...... 你的名字
保存,之后就可以直接用key登录服务器了。
默认启动PowerShell
登录进入服务器后,默认启动的是cmd。如果想换成PowerShell,可以修改注册表,或在PowerShell中输入以下命令:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
参见
- OpenSSH Server configuration for Windows Server and Windows