无法通过运行 OpenSSH 的 SSH 连接到 Windows 10

Posted

技术标签:

【中文标题】无法通过运行 OpenSSH 的 SSH 连接到 Windows 10【英文标题】:Cannot connect to Windows 10 over SSH running OpenSSH 【发布时间】:2020-12-01 12:38:05 【问题描述】:

我有一台运行 OpenSSH 的 Windows 10 机器,我需要使用 PuTTY 通过 SSH 连接到该机器。我已经使用 PuTTYgen 在主机上创建了一个公钥/私钥。我将公众加载到 .ssh/authorized_keys 下的用户配置文件目录中。当我从网络外的机器连接 PuTTY 时,我收到以下错误消息:

"Server refused our key"

我已经阅读了几篇文章,它们都表明没有正确读取公钥。我做了以下更改,但没有成功。

    更新用户对 .ssh 和 /authorized_keys 的权限,将用户设置为所有者。 目前我的 .ssh 文件夹位于 %SYSTEMDRIVE%/users/[USERNAME]/.ssh 我在我的数据驱动器上重新创建了这个目录,以确保这不是问题:“D:/users/[USERNAME]/.ssh 因为我使用的帐户是管理员帐户,所以我创建了“%Program Data/ssh/adminstrators_authorized_keys” 当用户是管理员时,我注释掉了 sshd_config 中查看#4 中文件的行。

这些尝试都没有解决问题。我以前从未在 Windows 10 主机上设置过 SSH,所以我没有想法。我在 sshd_config 中设置了日志记录,但没有生成日志文件。

谁能帮我解决这个问题?

【问题讨论】:

远程机器是否打开了 22 端口?远程网络是否转发了 22 端口? 是的,端口 22 在防火墙中打开并接受连接。我可以 telnet 超过 22 没有问题,我可以在防火墙日志中看到成功的条目。 我为确保 22 正常工作所做的另一项测试是,如果我输入用户帐户的密码,我可以通过 SSH 连接登录。所以我可以确认端口 22 正在工作并且 SSH 正在接受连接,我只是无法让公钥/私钥工作。 【参考方案1】:

首先,如this tutorial,请确保复制 OpenSSH 公钥

OpenSSH 公钥位于Key / Public key for pasting info OpenSSH authorized_keys file: 下方的框中。公钥以ssh-rsa 开头,后跟一串字符。

其次,如this gist,启动sshd -d 以在调试模式下获得一次性会话:您将看到更多关于它拒绝您的公钥的线索。


OP gacto 确认in the comments:

sshd -d 给了我我需要的信息。

这是一个文件权限问题。我已将文件权限设置为 OpenSSH 设置说明中的规范,但对文件的访问被阻止。 更新文件权限后,我就可以毫无问题地连接了。

【讨论】:

sshd -d 给了我需要的信息。这是一个文件权限问题。我已将文件权限设置为 OpenSSH 设置说明中的规范,但对文件的访问被阻止。一旦我更新了文件权限,我就可以毫无问题地连接。感谢您的帮助。 @gacto 太棒了!我已将您的评论包含在答案中以提高知名度。【参考方案2】:

就我而言,sshd -d 中的消息是

来自 [IP] 端口 [port] ssh2 的 [user] 的公钥失败:RSA SHA256:[fingerprint]

原因是authorized_keys 文件是UTF-16 格式。它需要 UTF-8 才能工作。

【讨论】:

以上是关于无法通过运行 OpenSSH 的 SSH 连接到 Windows 10的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到 SSH 服务器。 /.ssh/authorized_keys:权限被拒绝

无法通过 python 通过 SSH 连接到 postgres 服务器

尝试通过 SSH 连接到系统时出现延迟

无法通过 SSH 连接到 Gitlab

无法通过 SSH 连接到曾经正常工作的 GCP 虚拟机实例

使用 SSH.NET 连接到 OpenSSH 7.4p1 失败并显示“服务器响应在位置包含空字符”但在 WinSCP 中有效