无法弄清楚 - 正在对我们的服务器(大约 400 台 Linux 和 UNIX 服务器)使用基于 id_rsa 密钥的身份验证。
在这种情况下,为了便于讨论,我有 3 个相同的服务器,最近安装了 3 个 Ubuntu 12.04 - svr1 svr2 svr3。
它们是 IBM 刀片服务器,因此我能够登录远程控制台。
对于 svr1,我可以使用我的 rsa 密钥正常进行 ssh - 从客户端使用 ssh -vvv 看起来如下:
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/mbubb/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
并且环境变量已设置并且我处于......
但对于 svr2 (和 3)它看起来像这样:
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/mbubb/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering DSA public key: /home/mbubb/.ssh/id_dsa
... 它循环遍历其他关键选项并最后:
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
奇怪的是,如果我通过 Bladecenter MM 进行控制台,然后 ssh 到服务器,它就可以正常工作。
当我收到“权限被拒绝”时,查看 svr2 上的 /var/log/auth.log 中没有任何条目。它似乎没有“看到”该尝试。
我检查了目录权限(homedir 和 sshdir),它们是一致的。我比较了 /etc/ssh/sshd_config - 它们是相同的。
也许是 PAM?或者是另一级别的身份验证。
我对此很感兴趣 - 显然这里有一些我没有明白的基本知识......
答案1
如果你使用的是加密主目录,那么解决方法是设置备用authorized_keys
位置通过设置
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
在服务器的sshd_config
文件中,因此它会在用户主目录以外的其他地方查找该文件。
该文件可以位于任何位置,但您必须将%u
用户的文件分成各自的目录,以便 sshd 找到目录和文件的适当权限。