我无法通过公钥从 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
当某些文件权限被认为过于宽松时,是否是为了保护您的系统,因此此设置是作为一项额外的安全措施。这里有一篇很好的文章解释 -
就我而言,此配置适用于没有关键数据的测试自动化服务器,该服务器每周运行几次,每次运行时间少于 15 分钟。