为什么不能使用带有authorized_keys的ssh自动登录?


12

我创建了一个私人/公共dsa密钥对。我已将公用密钥放在服务器中

~/.ssh/authorized_keys

一切都像其他服务器一样进行设置,但似乎该服务器只是忽略了我的工作。


检查/etc/ssh/ssh_config/etc/ssh/sshd_config确认您所需的内容均未禁用。
克里斯托弗·约翰逊

您也将需要检查sshd_config。
Vagnerr

谢谢。我更新了答案(最初只提到ssh_config)。
克里斯托弗·约翰逊

如果您使用的是ssh的openssh风格,那么以上所有讨论都是完美的。如果您使用的系统是ssh2,则它具有完全不同的密钥管理方式。本文讨论了方法和内容。burnz.wordpress.com/2007/12/14/...
克里斯-

1
通常,/var/log/auth.log在Debian系统或/var/log/secureRedHat 系统上进行检查时,应向您提供明确的建议,以
防止误解

Answers:


15

尽管您的问题可能已经通过其他答案解决了,但是我已经退出了足够的计算机,无法在注销之前不验证sshd_config更改,因此提出了以下过程,该过程可能对将来调试sshd config更改很有用:

在测试后确认行为符合您的预期之前,请勿断开活动的ssh连接。

一种。验证您认为sshd应该在做什么

b。使用“ -t”验证配置是否有效

C。启动您可以实时监控的服务器的详细“测试”版本

d。启动可以实时监控的详细“测试”客户端连接


一种。验证您认为sshd应该在做什么

复查sshd配置文件,而不用如下所示的所有注释(假设sshd_config是正确的文件,并且在/ etc / ssh中)

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

这只是清除了所有内容,因此我们可以验证自己认为正在更改的内容(不一定正确或不正确。)

b。使用“ -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所示)

祝你好运


我想您还应该检查客户端上的ssh_config文件,以确保它正在执行您期望的操作。使用类似以下内容的grep输出注释:> grep -v“ ^#” / etc / ssh / ssh_config | grep -v“ ^ $”
samt

好吧,客户端ssh的配置可以随时固定,如果配置错误,那就是您被锁定的服务器。
Soviero

33

如果所有者属性错误,服务器将忽略您的authorized_keys文件。将其更改为此可以解决:

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

6
ssh -vvv -l用户名server.domain将告诉您是否发送了有效密钥
Dave Cheney

有时我看到sshd抱怨主目录上的权限错误-因此,我会像setatakahashi一样在列表中添加“ chmod o-rwx〜”(或至少是“ chmod ow〜”)。当监视日志文件时,这通常会变得很明显-我在那里看到的错误消息始终指向正确的方向。
奥拉夫2009年

这个答案似乎最有可能,但Dave Cheney的评论是了解实际情况的唯一方法。还要检查服务器日志。
dwc

这是我的问题。我为此打了几个小时。非常感谢!
山姆·索菲斯

1
这确实成功了,但是我之前的权限分别是07750644。为什么减少权限会有帮助?这是在某处配置的安全预防措施吗?
院长2012年

11

$ 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


2
关于〜的要点,您必须确保除您自己外没有其他人可以写入您的主目录,否则他们可以重命名〜/ .ssh目录
Dave Cheney

最后的chmod应该是:$ chmod 600 ~/.ssh/authorized_keys$ chmod 600 ~/.sHh/authorized_keys
SooDesuNe'2

3
属性值应该是什么?
Michael

0

另一个重要的陷阱

如果您的主目录是加密的,则 sshd将无法访问〜/ .ssh / authorized_keys。

看到这个答案

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.