当前位置: 首页>>技术教程>>正文


ssh 不再允许公钥认证

,

问题描述

我的机器最近停止接受传入的公钥身份验证。我有一个 ubuntu 11.04 桌面,我从 Windows 机器 ssh 进入。我在选美比赛中使用腻子。我可以连接,但只能使用交互式密码身份验证,而不是我设置的 rsa 密钥。

我已经验证该密钥列在 ~/.ssh/authorized_keys 中。我该如何解决这个问题,我该检查什么?

最佳方法

如果公钥验证不起作用:确保在服务器端,您的主目录 ( ~ )、~/.ssh 目录和 ~/.ssh/authorized_keys 文件都只能由其所有者写入。特别是,它们中的任何一个都不能被组写入(即使用户单独在组中)。 chmod 755chmod 700 可以,chmod 770 不行。

出现问题时要检查的内容:

  • 运行 ssh -vvv 可以看到很多调试输出。如果您发布一个问题,询问您为什么无法使用 ssh 连接,请包含此输出(您可能希望匿名主机名和用户名)。

  • 如果可以,请检查 /var/log/auth.log 中的服务器日志。

  • 如果公钥身份验证不起作用,请再次检查权限,尤其是组位(见上文)。

次佳方法

我遇到了同样的事情,最后发现这是因为我加密了我的主目录。 SSH 在您登录之前无法读取 authorized_keys 文件,因此基本上它会强制您先进行密码验证。请参阅以下链接中有关加密主目录的部分:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory

第三种方法

如果您检查目录的权限,并且在它们之后有一个 “.”,那么您可能启用了 selinux,这将导致密钥交换混乱,并且默认为手动密码识别。

您可以按照此处的说明禁用 SELinux 进行故障排除:http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html,或者只需编辑 /etc/selinux/config 文件并将其从 “enforcing” 更改为 “disabled”。

希望这可以帮助。

第四种方法

我会确保您在 /etc/ssh/sshd_config 中的设置正确。

要强制仅使用 PKI 并禁止密码,请找到该行

#PasswordAuthentication yes 

在您的文件中,取消注释并将其设置为

PasswordAuthenticate no

我还会通读设置的平衡以确保它们有意义。特别是,请尽量确保您使用 RSA 密钥,因为已知 DSA 会受到损害。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12786.html,未经允许,请勿转载。