为服务器的sshd启用公钥authentication

我有两台运行RHEL 5的服务器。两者的configuration几乎相同。 我已经在两者上设置了RSA公钥authentication,一个可以工作,但另一个不工作:

[my_user@client] $ ssh my_user@server1 --- server1 MOTD Banner --- [my_user@server1] $ 

并在另一台服务器上:

 [my_user@client] $ ssh my_user@server2 my_user@server2's password: --- server2 MOTD Banner --- [my_user@server2] $ 

server2的/ etc / ssh / sshd_config文件片段:

 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 

当我运行ssh -vvv我得到以下代码片段:

 debug3: authmethod_lookup publickey debug3: remaining preferred: keyboard-interactive,password debug3: authmethod_is_enabled publickey debug3: Next authentication method: publickey debug1: Offering public key: /home/my_user/.ssh/id_rsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug1: Authentication that can continue: publickey,gssapi-with-mic,passowrd debug1: Offering public key: /home/my_user/.ssh/id_dsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug1: Authentication that can continue: publickey,gssapi-with-mic,passowrd debug3: authmethod_lookup password debug3: remaining preferred: ,password debug3: authmethod_is_enabled password debug1: Next authentication method: password my_user@server2's password: 

编辑:服务器和客户端的.ssh目录都有700个权限,并且内部的所有文件具有644或600权限

你有没有检查两台机器上的文件系统权限? sshd对于.ssh文件夹和这个文件夹中的文件的权限有点挑剔。

.ssh应该有700,文件应该有644或更less。

这个解决scheme将是简单的假设你没有改变服务器之间的sshd_config。 你可以对他们运行diff确定。

正如Christian所说,权限通常是最可能的原因。

如果权限是准确的,那么其中一台服务器上的私钥和公钥对将会出现不匹配的情况。

由于明显的反应已经适当的给出了一些其他的debugging选项:

在server1和server2上的.ssh / authorized_keys之间执行diff

通过日志logging在前台运行sshd守护进程,它应该为您提供拒绝身份validation密钥的原因。

Christian和Warner在正确的轨道上,这是一个权限错误,但它是主目录的b / c,而不是.ssh目录:

 $# tail --f=n /var/log/secure Mar 22 10:52:57 my_server2 sshd[6278]: Authentication refused: bad ownership or modes for directory /home/my_user $# ls -la /home/my_user drwxrwx--- 21 my_user my_user 4096 Mar 22 10:37 . ... 

在将目录chmod到755之后,login工作正常。