将最新版本的内容提取到
C:\Program Files\OpenSSH
(确保二进制位置具有写入权限,仅限于SYSTEM,管理员组,经过身份验证的用户应该且只能具有读取和执行。)在升高的Powershell控制台中,运行以下命令
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
打开sshd.exe的防火墙以允许入站SSH连接
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
注意:
New-NetFirewallRule
仅适用于Windows 2012及更高版本的服务器。如果您位于客户端台式机(如Windows 10)或Windows 2008 R2及更低版本上,请尝试:netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
开始
sshd
(如果它们不存在,这将自动生成%programdata%\ ssh下的主机密钥)net start sshd
从0.0.XX版本迁移sshd配置(可选):
- 要使用现有的自定义sshd_config,您需要将其从二进制位置复制到%programdata%\ ssh \ sshd_config(请注意,%programdata%是一个隐藏目录)。
- 要使用现有的主机密钥,您需要将它们从二进制位置复制到%programdata%\ ssh \
- 以前的版本需要SSHD资源(sshd_config,主机密钥和authorized_keys)具有对“NT Service \ SSHD”的读取访问权限。这不再是一项要求,应删除相应的ACL条目。你可以运行
Powershell.exe -ExecutionPolicy Bypass -Command '. .\FixHostFilePermissions.ps1 -Confirm:$false'
(注意第一个“。”是一个调用操作符)来修正这些权限。
设置
sshd
并ssh-agent
自动启动(可选)Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic
配置默认的ssh shell(可选)
如果您配置了默认shell,请确保OpenSSH安装路径位于系统PATH中。如果尚不存在,请修改系统PATH并重新启动sshd服务。
在服务器端,在Windows注册表中配置默认的ssh shell。
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShell
- 完整路径(区分大小写)的shell可执行文件
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShellCommandOption
- 配置的默认shell需要执行命令并立即退出并返回到调用进程的开关。它用于执行远程ssh命令。示例 - ssh user @ ip主机名
示例 - Powershell cmdlet将powershell bash设置为默认shell
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShellCommandOption -Value "/c" -PropertyType String -Force
如果您将powershell.exe / cmd.exe / WSL-bash.exe配置为默认的ssh shell,那么您可以忽略它Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShellCommandOption
。你的注册表应该看起来像这样。
如果你想配置除powershell / cmd / WSL-bash之外的默认shell(Ex-cygwin),那么你的注册表应该看起来像这样
卸载Win32 OpenSSH
- 以管理员身份启动Windows Powershell
- 导航到OpenSSH目录
cd 'C:\Program Files\OpenSSH'
- 运行卸载脚本
powershell.exe -ExecutionPolicy Bypass -File uninstall-sshd.ps1