使用管理员帐户和公钥登录 Windows 10 OpenSSH 服务器

使用管理员帐户和公钥登录 Windows 10 OpenSSH 服务器

我无法通过公钥从 CentOS OpenSSH 客户端登录 Windows 10 OpenSSH 服务器。系统始终要求输入我的密码(并接受)。

我发现许多关于在服务器端正确设置权限的帖子:

  • 目录C:\Users\username\.ssh
  • 文件C:\Users\username\.ssh\authorized_keys

我认为我已经完成了权限方面的所有要求。但为了排除权限问题,我设置了StrictModes=no服务器作为测试并重新启动了服务器。我发现我仍然必须输入密码。

还有什么可能阻止我通过公钥登录?

答案1

您的评论和相关信息请求让我找到了答案。如果其他人也遇到这个问题,那么问题是...

我的用户是管理员,并且出现以下内容sshd_config

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

因此,将我的公钥放在我自己的用户中.ssh/authorized_keys,它不会被拾取。一旦我将其放在 中调用的文件中sshd_config,一切就都正常了。

答案2

    Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

我最后在 sshd_config 中 #comment 掉了这两行。这让我很为难,想弄清楚为什么没有一个密钥被接受。

如果您将其注释掉,它将只使用 %User%/.ssh 文件夹中的密钥,就像现有的其他 SSH 程序一样。

我确实花了 4 个小时才弄清楚为什么它不接受我的密钥。我现在对这两行代码非常生气。

答案3

为了解决这个问题,我需要使用 Martins 的回答和 Nick 的评论。所以最终的解决方案是

StrictModes no
Match Group administrators
   AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys    

sshd_config

编辑:正如 Martin 指出的那样,这样做存在安全风险,strictmodes当某些文件权限被认为过于宽松时,是否是为了保护您的系统,因此此设置是作为一项额外的安全措施。这里有一篇很好的文章解释 -

https://www.ibm.com/support/knowledgecenter/SS7K4U_liberty/com.ibm.websphere.wlp.zseries.doc/ae/tagt_wlp_collective_zos_ssh.html

就我而言,此配置适用于没有关键数据的测试自动化服务器,该服务器每周运行几次,每次运行时间少于 15 分钟。

相关内容