win-openssh

微软官方的解决方案:

基于PowerShell的OpenSSH:https://github.com/PowerShell/Win32-OpenSSH/releases

详细说明可以参考Github的Wiki,这里简单说下安装步骤:

安装步骤:

1、进入链接下载最新 OpenSSH-Win64.zip(64位系统),解压至C:\Program Files\OpenSSH

2、打开cmd,cd进入C:\Program Files\OpenSSH(安装目录),执行命令:

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

3、设置服务自动启动并启动服务:

sc config sshd start= auto

net start sshd

到此服务已经安装完毕,默认端口一样是22,默认用户名密码为Window账户名和密码,当然防火墙还是要设置对应端口允许通讯

修改设置:

ssh_config文件在C:\ProgramData\ssh目录下(此目录为隐藏目录)

端口号:Port 22

密钥访问:PubkeyAuthentication yes

密码访问:PasswordAuthentication no

空密码:PermitEmptyPasswords no

密钥登录

普通用户

Windows Service即使配置了.ssh/authorized_keys公钥,连接时依然显示没有注册公钥查阅了官方wiki判断可能是权限问题:Fix SSH file permissions

进入C:\Program Files\OpenSSH(安装目录),右键 FixHostFilePermissions.ps1【使用PowerShell运行】,命令行提示全选是,重启sshd服务后密钥连接正常

参考官方wiki:administrators_authorized_keys

特权账户

Administrators用户组的用户连接公钥,默认位置为

1
C:\ProgramData\ssh\administrators_authorized_keys

并且需要设置权限,在CMD中执行命令:
1
icacls administrators_authorized_keys /inheritance:r
2
icacls administrators_authorized_keys /grant SYSTEM:(F)
3
icacls administrators_authorized_keys /grant BUILTIN\Administrators:(F)

修改ssh_config文件:
1
AuthorizedKeysFile	%programdata%/ssh/administrators_authorized_keys

设置完成后重启sshd服务,接下来就可以使用了