为服务器的 sshd 启用公钥认证

为服务器的 sshd 启用公钥认证

我有两台运行 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登录就可以正常工作。

相关内容