尝试连接 Windows Server 时出现“服务器拒绝我们的密钥”

尝试连接 Windows Server 时出现“服务器拒绝我们的密钥”

我正在尝试使用 PuTTY 将我的远程桌面从笔记本电脑安全地连接到台式计算机,到目前为止,我已经成功地通过隧道通过正确的端口,无需密钥,只需使用我的用户名和密码即可。 这些都是 Windows 机器,运行 Windows 10。

我使用 PuTTYGen 生成了一个密钥,每次我都会将其复制并粘贴public keyC:\Users\Chris\.ssh\authorized_keys(服务器上),如下所示:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQBl8kTxv8cxW5tSvNjId+qrype1ZA+zEO3Qag+BHhlMvvtrx/faZp8XMXbSqulZVqXNFnN0ADAaAv2hMltP+rft4R8X9qaJSIlYdPo8F3BmV5G2mu+AQKnOrGooLfwc2oa4qOfHJMqzciFqVVTAOjo3BQ3ZtZnN23os1WfiRCcwlNZgrRlgpUPkA/CgaWTDnlDpxvNZp3fVia8pDvLlqVIIn+Fu7UEJi/pNDUiexrky7nR0JzIL3ZAPAu6U26WLJA7fYw7nlySzz/BuxiPyIzeRT+qiHQuwf2yOkCXNIeQQjgLsbw0eS67TWC7pa6NbLa0KqmgDChdSNsSB5aKTMh3T rsa-key-20190410

然后,在客户端上,我选择私钥文件Settings > Connection > SSH > Auth > Private key file for Authentication > C:\Users\Chris\Desktop\SSH-KEY\key1.ppk

我已经仔细检查了两次和三次:我粘贴的公钥authorized_keys与加载到 PuTTY 中的私钥相对应。

当我尝试连接会话时,出现以下错误:

Using username "Chris".
Server refused our key
[email protected]'s password:

我找不到进一步的文档或错误代码。

没有日志文件,但是当我手动启用日志记录并在连接后打开它时,客户端的文件中出现了以下内容:

Using username "Chris".
Server refused our key
[email protected]'s password:

除了生成和使用从服务器和客户端生成的密钥对之外,我还尝试使用Chris和。chris

后来,我在以下位置找到了该服务器的附加日志文件C:\ProgramData\ssh\logs\sshd.log

1184 2019-04-10 12:38:48.995 Server listening on :: port 22.
1184 2019-04-10 12:38:48.995 Server listening on 0.0.0.0 port 22.
13568 2019-04-10 12:39:00.943 Authentication refused.
13568 2019-04-10 12:39:04.395 Connection closed by authenticating user chris my.pub.lic.ip port 54460 [preauth]

我已经看到了一些关于使用chmod和检查的建议/var/log/secure,但这对我来说都没用,因为它们是 Linux 命令和目录,而且这两台机器都是 Windows。

我承认:我有点为此而发疯。我按照所有教程的建议做了,但没有任何效果。

答案1

我也遇到了同样的问题。简而言之,这是由我方的两个不同“配置错误”导致的。

  1. 如果您是管理员用户,则需要使用“administrators_authorized_keys”。
  2. authorized_keys 文件需要具有特定权限才能使用。

确保创建该文件:

%PROGRAMDATA%\ssh\administrators_authorized_keys

将您的 SSH 公钥插入其中,然后通过在 powershell 中运行以下命令确保它具有正确的权限:

icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

这似乎为我解决了问题。假设您的用户不是管理员用户,请仅尝试您 authorized_keys 文件中的权限部分。也许它可以解决问题。

该解决方案基于https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement在“管理用户”部分下

答案2

我想我遇到了同样的问题...从那时起运气好吗?你找到原因/解决方案了吗?

编辑:

好的,我在我这边找到了问题的原因...克里斯,如果你使用管理员帐户进行 SSH 操作,那么对你来说可能也是同样的情况:

事实上,这篇文章中的一条评论指出了这个问题: https://stackoverflow.com/questions/20864224/putty-getting-server-refused-our-key-error

“主要原因是,对于管理员来说,存在一个错误,它只会在 Administrators_authorized_keys 文件中查找,而不是在预期的用户 .ssh 文件夹中查找 authorized_keys(这是每个人在 Windows 上运行 sshd 时的痛苦之处)”

解决方案:

在 %programdata%\ssh 中的 sshd_config 文件的末尾/底部,您需要注释掉(或删除)最后两行:

Match Group Administrators
    AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

需要重新启动 SSH 服务器才能生效。

另一种(可能更安全的)方法是在 %programdata%\ssh 下创建这样的“administrators_authorized_keys”文件,并在其中添加确实是管理员用户的客户端的公钥。

答案3

Match Group Administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

请记住,“管理员”是管理员组的本地化名称!例如,在德语中,您必须将其更改为

Match Group administratoren
   AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

相关内容