有一个问题困扰了我几天。
我有 3 台服务器。 A、B 和 C。
我想通过 ssh 从 A 访问 B 和 C。我已经在 A、B、C 上设置了公钥/authorized_keys ...。
场景#1:通过 ssh 从 A 访问 B(.133)——成功!场景#2:通过 ssh 从 A 访问 C(.148) -- 失败,要求输入密码!
比较他们的调试信息:
成功案例1个;它是 OpenSSH 5.1,它更喜欢 ssh-rsa 密钥:
debug3: order_hostkeyalgs: prefer hostkeyalgs: ssh-rsa-
[email protected],[email protected],ssh-rsa.
2 失败案例;它是OpenSSH6.2,它不喜欢ssh-rsa密钥:
debug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256
[email protected],[email protected],ecdsa-
[email protected],ecdsa-sha2-nistp256,ecdsa-
sha2-nistp384,ecdsa-sha2-nistp521
我的密钥是通过命令“ssh-keygen -t rsa”生成的,所以,我认为,它是 rsa 密钥。不确定这是否是关键原因。
如何在 OpenSSH(sshd) 中配置“首选主机密钥”?
或者也许这个问题是由其他原因引起的?
===debug for Scenario #1 and #2 :===
See it at: diffchecker.com/tj5v3iog
(此区域不允许发布太多调试信息:( )
答案1
看起来您的 sshd 配置为接受 ecdsa 密钥。
您可以在服务器端追踪为什么它只查找 ECDSA 密钥而不是 RSA,或者您可以通过提供 ECDSA 密钥从客户端解决此问题。
从客户端创建和使用 ecdsa 密钥的步骤如下:
ssh-keygen -t ecdsa -b 256 -N '' -f ~/.ssh/id_ecdsa
ssh-copy-id -i ~/.ssh/id_ecdsa C
请注意 ssh-keygen 中-N
的两个单引号 (2x '
) 而不是单个双引号。