我有两台运行 RHEL 5 的服务器。两台服务器的配置几乎相同。我在两台服务器上都设置了 RSA 公钥身份验证,其中一台服务器可以工作,而另一台服务器不工作:
[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 个权限
答案1
您是否检查过两台机器上的文件系统权限? sshd 对文件夹 .ssh 及其中的文件的权限有点挑剔。
.ssh 应该有 700 个,而文件应该有 644 个或更少。
答案2
如果您没有更改服务器之间的 sshd_config,则此解决方案将很简单。您可以diff
针对它们运行以确保无误。
正如克里斯蒂安所说,权限通常是最可能的原因。
如果权限准确,则其中一台服务器上的私钥和公钥对之间会不匹配。
答案3
由于已经给出了明显的回应,因此还有一些其他的调试选项:
在 server1 和 server2 上执行 .ssh/authorized_keys 之间的差异检查
在前台运行 sshd 守护进程并进行日志记录,它会告诉你拒绝身份验证密钥的原因。
答案4
Christian 和 Warner 的思路是对的,这是一个权限错误,但这是由于主目录而不是 .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 .
...
将目录改为 755后chmod
登录就可以正常工作。