我正在寻找有关如何解决通过 SSH 连接到新服务器的问题的提示。我正在尝试使用私钥身份验证进行连接,其中 SSH 使用我的本地私钥进行身份验证,而不提示输入密码,但遇到了问题。
当我运行时ssh root@newserver
,连接立即成功,而不提示我输入密码。相反,当我运行 时ssh user@newserver
,私钥身份验证尝试失败,并提示我输入密码。我对后者失败的原因感到困惑。我应该尝试什么来调试这个?
我已经尝试过的事情:
我仔细检查过
/root/.ssh/authorized_keys
并且/home/user/.ssh/authorized_keys
.两者是相同的,并且都包含我的公钥。我仔细检查了 的权限
/root/.ssh
和/home/user/.ssh
目录newserver
。一切看起来都很好,无论如何,两者的权限都是相同的。我尝试从两个不同的客户端登录,并在两个客户端上看到相同的行为,所以我认为这不是特定于客户端的。我可以从这两个客户端成功登录其他服务器。
我尝试
/usr/sbin/sshd -d -p 2323
在新服务器上运行,然后使用ssh -p 2323 root@newserver
和连接ssh -p 2323 user@newserver
。这是令人费解的部分:当我sshd
从命令行手动启动时,我可以通过私钥身份验证登录(root
以及),但是当我尝试使用系统标准时,我只能登录通过私钥身份验证进入但不进入。user
sshd
root
user
我跑了
ssh -v
。我没有看到任何有启发性的消息:随着ssh -v root@newserver
,我明白了debug1: Offering DSA public key: /home/user/.ssh/id_dsa debug1: Server accepts key: pkalg ssh-dss blen 433
有了
ssh -v user@newserver
,我得到debug1: Offering DSA public key: /home/daw/.ssh/id_dsa debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
添加更多
-v
的 不会带来任何洞察力;与ssh -vvvvv bingen.cs.berkeley.edu
,我得到debug1: Offering DSA public key: /home/daw/.ssh/id_dsa 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
因此没有说明为什么尝试通过私钥身份验证登录失败。
这是 Fedora 21,openssh-6.6.1p1-11.1.fc21.x86_64。
答案1
我认为nlu已经指出了正确的方向。
一般来说,追踪 ssh 问题的更好方法是sshd
在服务器端停止 ssh,然后使用 启动它$(which sshd) -d
。
几乎在所有情况下,这都会为您提供更有意义的错误消息。
更新:抱歉 - 你已经这样做了。
cli 上的 sshd 和服务上的 sshd 似乎有一个区别:SELINUX。
在 CLI 上,它没有那么严格。你有启用selinux吗?如果是这样 - 检查 se-logs/设置!
答案2
您还应该检查 /home/user/.ssh/authorized_keys 的所有权和权限。
答案3
事实证明这是 SELinux 中文件的权限问题~/.ssh/
。我从存储在外部驱动器上的备份中复制了文件,我猜它们收到了不同的标签,并且保留了不正确的标签。
我早该知道。当遇到可能是权限问题的令人费解的故障时,请务必检查 SELinux。
修复:restorecon -r /home/user/.ssh
.