为什么不能通过ssh与authorized_keys自动login?

我创build了一个私人/公共的dsa-keypair。 我把公钥放在了服务器上

~/.ssh/authorized_keys 

一切都像我的其他服务器设置,但似乎服务器只是无视我的努力。

虽然你的问题可能已经被其他答案解决了,但是我已经把自己的机器locking了,没有在签名之前validationsshd_config的变化,所以想出了下面的过程,以后可能对sshd config的debugging有所帮助:

不要断开活动的SSH连接,直到经过testingvalidation行为符合您的预期。

一个。 validation你认为sshd应该做什么

湾 使用“-t”validationconfiguration是否有效

C。 启动一个详细的“testing”版本的服务器,你可以生活监控

d。 开始详细的“testing”客户端连接,您可以实时监控


一个。 validation你认为sshd应该做什么

回顾一下sshdconfiguration文件,不需要像下面的东西(假设sshd_config是正确的文件,在/ etc / ssh中)

$ grep -v“^#”/ etc / ssh / sshd_config | grep -v“^ $”

这只是清除了事情,所以我们validation我们认为我们正在改变(不一定是否正确)。

湾 使用“-t”validationconfiguration是否有效

从我使用的sshd的手册页,

-ttesting模式。 只检查configuration文件的有效性和密钥的完整性。 这对于可靠地更新sshd非常有用,因为configuration选项可能会更改。

其他变化可以有更微妙的情况。 例如,在确认公钥authentication工作正常之前,不要禁用密码authentication。

C。 启动一个详细的“testing”版本的服务器,你可以生活监控

$ sudo / usr / sbin / sshd -ddd -p 9999

这使您现有的工作会话处于活动状态,但为您提供另一个sshd实例来validation您的新configuration更改。 SSHD现在运行在用户定义的端口的前台(在我们的例子中为9999),并推送了很多可以在/ var / log / authlog中跟踪的debugging信息(或者可能是/var/log/auth.log)在你的操作系统上。)

d。 开始详细的“testing”客户端连接,您可以实时监控

在详细模式下运行ssh客户端连接,在屏幕上显示更多信息,这可能会导致您更好地debugging错误。

$ ssh -vvv -p 9999服务器名称

您现在应该在服务器的日志文件或客户端的连接屏幕上有足够的信息来隔离您的问题。

解决scheme通常归结为文件权限(如Magnar和setatakahashi所示)

祝你好运

如果所有者属性错误,服务器将忽略您的authorized_keys文件。 改变它可以修复它:

 chmod 0700 ~/.ssh chmod 0600 ~/.ssh/authorized_keys 

$ 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