Magnar Asked: 2009-05-01 03:17:41 +0800 CST2009-05-01 03:17:41 +0800 CST 2009-05-01 03:17:41 +0800 CST 为什么使用authorized_keys通过ssh自动登录不起作用? 772 我创建了一个私有/公共 dsa-keypair。我已将公钥放在服务器上 ~/.ssh/authorized_keys 一切都像我的其他服务器一样设置,但似乎服务器只是无视我的努力。 security login ssh 4 个回答 Voted Magnar 2009-05-01T03:19:28+08:002009-05-01T03:19:28+08:00 如果所有者属性错误,服务器将忽略您的 authorized_keys 文件。将其更改为此可以修复它: chmod 0700 ~/.ssh chmod 0600 ~/.ssh/authorized_keys Best Answer samt 2009-05-25T06:22:27+08:002009-05-25T06:22:27+08:00 尽管您的问题可能已经被其他答案解决了,但我已经将自己锁定在足够多的机器之外,以免在退出之前验证 sshd_config 更改,因此提出了以下过程,可能对未来调试 sshd 配置更改有用: 在测试后验证行为符合您的预期之前,请勿断开活动的 ssh 连接。 一个。验证您认为 sshd 应该做什么 湾。使用“-t”验证配置是否有效 C。启动可以实时监控的服务器的详细“测试”版本 d。启动一个详细的“测试”客户端连接,您可以实时监控 一个。验证您认为 sshd 应该做什么 查看 sshd 配置文件,不包含所有注释,如下所示(假设 sshd_config 是正确的文件并且在 /etc/ssh 中) $ grep -v "^#" /etc/ssh/sshd_config | grep -v "^$" 这只是清除问题,因此我们验证我们认为我们正在更改的内容(不一定是否正确。) 湾。使用“-t”验证配置是否有效 从我正在使用的 sshd 的手册页中, -t 测试模式。只检查配置文件的有效性和密钥的完整性。这对于可靠地更新 sshd 很有用,因为配置选项可能会更改。 其他变化可能有更微妙的情况。例如,在您确定公钥身份验证正常工作之前,不要禁用密码身份验证。 C。启动可以实时监控的服务器的详细“测试”版本 $ sudo /usr/sbin/sshd -ddd -p 9999 这使您现有的工作会话保持活动状态,但为您提供另一个 sshd 实例来验证您的新配置更改。SSHD 现在在前台运行到用户定义的端口(在我们的示例中为 9999。)并推送大量嘈杂的调试信息,您可以在 /var/log/authlog(或可能 /var/log/auth.log 中跟踪,具体取决于在您的操作系统上。) d。启动一个详细的“测试”客户端连接,您可以实时监控 以详细模式运行 ssh 客户端连接,以在屏幕上显示更多信息,这些信息可能会引导您更好地调试错误。 $ ssh -vvv -p 9999 服务器名 您现在应该在服务器的日志文件或客户端的连接屏幕中有足够的信息来隔离您的问题。 解决方案通常归结为文件权限(如 Magnar 和 setatakahashi 所示) 祝你好运 setatakahashi 2009-05-01T18:58:22+08:002009-05-01T18:58:22+08:00 $ chmod 700 ~ $ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keys 在 /etc/ssh/sshd_config 中检查这些属性 $ sudo grep PubkeyAuthentication /etc/ssh/sshd_config $ sudo grep 协议 /etc/ssh/sshd_config ApriOri 2018-03-09T08:52:33+08:002018-03-09T08:52:33+08:00 另一个重要的陷阱.. 如果你的主目录是加密的,sshd 将无法访问 ~/.ssh/authorized_keys.. 看到这个答案
如果所有者属性错误,服务器将忽略您的 authorized_keys 文件。将其更改为此可以修复它:
尽管您的问题可能已经被其他答案解决了,但我已经将自己锁定在足够多的机器之外,以免在退出之前验证 sshd_config 更改,因此提出了以下过程,可能对未来调试 sshd 配置更改有用:
在测试后验证行为符合您的预期之前,请勿断开活动的 ssh 连接。
一个。验证您认为 sshd 应该做什么
湾。使用“-t”验证配置是否有效
C。启动可以实时监控的服务器的详细“测试”版本
d。启动一个详细的“测试”客户端连接,您可以实时监控
一个。验证您认为 sshd 应该做什么
查看 sshd 配置文件,不包含所有注释,如下所示(假设 sshd_config 是正确的文件并且在 /etc/ssh 中)
这只是清除问题,因此我们验证我们认为我们正在更改的内容(不一定是否正确。)
湾。使用“-t”验证配置是否有效
从我正在使用的 sshd 的手册页中,
其他变化可能有更微妙的情况。例如,在您确定公钥身份验证正常工作之前,不要禁用密码身份验证。
C。启动可以实时监控的服务器的详细“测试”版本
这使您现有的工作会话保持活动状态,但为您提供另一个 sshd 实例来验证您的新配置更改。SSHD 现在在前台运行到用户定义的端口(在我们的示例中为 9999。)并推送大量嘈杂的调试信息,您可以在 /var/log/authlog(或可能 /var/log/auth.log 中跟踪,具体取决于在您的操作系统上。)
d。启动一个详细的“测试”客户端连接,您可以实时监控
以详细模式运行 ssh 客户端连接,以在屏幕上显示更多信息,这些信息可能会引导您更好地调试错误。
您现在应该在服务器的日志文件或客户端的连接屏幕中有足够的信息来隔离您的问题。
解决方案通常归结为文件权限(如 Magnar 和 setatakahashi 所示)
祝你好运
在 /etc/ssh/sshd_config 中检查这些属性
另一个重要的陷阱..
如果你的主目录是加密的,sshd 将无法访问 ~/.ssh/authorized_keys..
看到这个答案