我正在尝试设置对我拥有用户帐户的几台计算机的公钥访问。
我做了什么:
- 我曾经
ssh-keygen
在我的个人计算机上生成一个密钥对(没有密码),我用它来访问有问题的两台机器。 - 我将
id_rsa.pub
由此创建的文件附加到~/.ssh/authorized_keys
两台机器上。
这个设置工作正常,让我可以通过 SSH 连接到一台机器。但对于另一台机器,它仍然提示我输入密码。我尝试使用ssh -vvv
以下是相关的输出行:
debug1: Offering public key: /xxxx/xxxxx/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /xxxx/xxxx/.ssh/id_dsa
debug3: no such identity: /xxxx/xxxx/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
然后系统会提示我输入密码,我可以使用它正常登录。
两台计算机上的帐户相同,通过 NIS 映射导出。认证成功的机器是NIS服务器,另一台是客户端。我在两台机器上的主目录都是不是相同(没有 NFS 安装等)。这是我能想到的使两台机器与众不同的唯一区别。
这里可能出了什么问题?
答案1
确保您将私钥放在两个系统上(您没有明确提及)。
检查主目录、通向主目录的目录、.ssh 目录以及最后的私钥文件和authorized_keys 的权限。在您的主目录之外,非 root 不应该写入任何内容。这是由 ssh 守护进程完成的检查,因为过于开放的权限可能意味着第三方将他自己的公钥放在您的authorized_keys
文件中,并且使用它可以获得您的权限。
当您拥有一个正在运行的系统时,您可以将权限/所有权与非工作的系统进行比较。