我在同一台计算机上有两个用户,并尝试为用户 2 设置 SSH。SSH 仍在要求第二个用户输入密码,因此我将 .rsa 文件从用户 1 复制到用户 2。尽管他们拥有相同的文件和权限,并且尽管用户 1 无需输入密码,但 SSH 仍要求用户 2 输入密码。什么原因导致同一台计算机上拥有相同 .rsa 文件的两个用户对 SSH 的响应不同?
答案1
从 root 开始直到主目录中的 .ssh 目录的所有目录都不能对“组”或“其他”具有写入权限。这是 ssh 为增加安全性而提出的要求。如果权限未如此设置,攻击者就有办法进入并修改或复制 .ssh,从他们具有写入权限的第一个目录开始,将私钥复制到他们选择的另一个用户或更新密钥,从而允许他们欺骗您并使用 ssh 以您的身份登录,而无需输入密码。因此,如果没有使用足够的权限对 .ssh 密钥进行适当保护,它们将无法工作。
答案2
我回答的是假设用户 1 和用户 2 在远程服务器上,并且您正在本地使用私钥连接到该服务器。
如果您尝试使用本地用户 1/用户 2 帐户连接到远程服务器,那么我的答案就不适用。
在远程服务器上你需要将公钥的内容添加到:
~/.ssh/authorized_keys
文件的内容将如下所示:
答案3
之前有人给出了一个合理的答案(他们一定删除了它),认为 .rsa 和所包含文件的权限不正确。虽然这不是问题所在,但几乎是正确的。事实证明,所有指向 .rsa 的文件夹都需要具有适当的权限。
一旦我使它们相同,无提示的 ssh 就可以工作,第一次提示接受主机密钥,但在下一次连接时不提示。
[root@computer ~]# ls -ld /home/user2 /home/user1
drwxrwx--- 24 user2 user2 4096 Jun 2 13:13 /home/user2
drwxr-xr-x 97 user1 user1 12288 Jun 2 13:06 /home/user1
[root@computer ~]# chmod -v 755 /home/user2
mode of `/home/user2' changed to 0755 (rwxr-xr-x)
[root@computer ~]# ls -ld /home/user2 /home/user1
drwxr-xr-x 24 user2 user2 4096 Jun 2 13:13 /home/user2
drwxr-xr-x 97 user1 user1 12288 Jun 2 13:06 /home/user1