Win11 启用 OpenSSH Server

Win11 启用 OpenSSH Server

在 Unix 系统(如 Ubuntu)中启用 OpenSSH Server 是很容易的,在 Windows 上启用要稍微复杂一些。本文记录一下在 Windows 上启用 OpenSSH Server 的过程和可能遇到的问题。

添加 OpenSSH Server 功能

Win11 预装了 OpenSSH Client,但没有预装 OpenSSH Server,因此必须首先安装这个功能。根据 https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse 来添加 OpenSSH Server 功能。这篇教程虽然是针对 Windows 服务器版撰写的,但对 Windows 11 专业版同样可用。

注意,在添加功能之后还要在服务中启用它。注意设置开机自动启动。

下面是我的电脑上没有任何连接(空闲)时的 sshd 服务:

本机连接测试

ssh [用户名]@localhost

如果看到以下内容:

The authenticity of host 'localhost' can't be established.
ECDSA key fingerprint is SHA256:(<a large string>).
Are you sure you want to continue connecting (yes/no)?

说明 SSH 服务器已经运行起来。

设置防火墙

Windows 默认的防火墙规则可能不允许来自局域网的设备连接本机的 SSH 服务器。在 Windows 安全中心(即 Windows Defender)中找到“防火墙和网络保护”,点击进入,找到“高级设置”,点击进入,将弹出一个新窗口。

在左侧点击“入站规则”,在列表中找到“OpenSSH SSH Server (sshd)”,如果它没有启用(左侧没有绿色对勾图标),那么右键启用它。这条规则是在前面添加 OpenSSH Server 功能时自动创建的,我这里默认只允许了“公用”网络,发现局域网里仍然连接不上,于是在属性中勾选了“专用”网络,就可以连接了。

解决 ping 不通的问题

另外你可能发现用局域网的其他设备 ping 本机是不通的(超时),这是因为 Windows 防火墙默认禁用了 ICMP。要解决这个问题,仍然是在上面的防火墙规则窗口中找到“”,启用这些规则。我不清楚“专用”“公用””域“之间的区别,因此把下图的 4 个规则全部启用了,启用之后可以 ping 通。

当然,ping 是否接通和 SSH 没有关系。这一步不是必须的。

解决公钥登录方式不起作用的问题

Windows 的 OpenSSH Server 的默认配置中,authorized_keys 文件的位置和 Unix 系统有所不同。这可能会导致按照 Unix 方法配置公钥登录(即将登录设备的公钥放进 ~/.ssh/authorized_keys 中)后,尝试登录仍然被要求提供密码。为了解决这一问题,可以修改 OpenSSH Server 的配置文件(位置:C:\ProgramData\ssh\sshd_config),注释掉下面这两行(通常位于该文件的最后):

# Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

然后重启(需要在管理员权限的终端中执行)sshd:

Restart-Service sshd

修改登录 Shell

Windows 的 OpenSSH Server 的默认登录 Shell 是 CMD(甚至不是 PowerShell)。如果希望修改,需要以管理员权限打开 PowerShell,执行

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\Git\bin\bash.exe" -PropertyType String -Force

此处将登录 Shell 改成了 Git Bash。如果希望改成其他 Shell,可以修改其中的 "C:\Program Files\Git\bin\bash.exe" 部分。我改成了 NuShell,体验良好。

参考

https://blog.cloudorz.com/post/configure-openssh-server-on-windows-with-private-key-authentication/

https://github.com/felix-cao/Blog/issues/206

https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse

posted @ 2024-10-30 17:19  Eslzzyl  阅读(340)  评论(0编辑  收藏  举报