mac*_*mac 3 ssh openssh sshd ssh-keys ubuntu-22.04
我无法从 MacOS 终端登录新安装的 Ubuntu 22.04。
这是我在尝试 SSH 到 ubuntu 时遇到的错误
QWERTY-M-91FL:~ qwerty$ ssh mnbv@16.67.45.123
Unable to negotiate with 16.67.45.123 port 22: no matching host key type found. Their offer: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
Run Code Online (Sandbox Code Playgroud)
此错误是由于服务器和客户端没有共同接受的主机密钥类型引起的。这很可能是由新的 SSH 服务器版本和旧的 SSH 客户端版本引起的。Ubuntu 22.04 与 OpenSSH 8.9 捆绑在一起,而 ssh-rsa(最常用的密钥类型)自 OpenSSH 8.8 以来已被禁用。从发行说明来看:
此版本默认禁用使用 SHA-1 哈希算法的 RSA 签名。进行此更改是因为 SHA-1 哈希算法在密码学上已被破坏,并且可能会造成 <USD$50K 1的选择前缀哈希冲突
最好的方法是更新您的 ssh 客户端版本。严重地。更改服务器设置可能是一种简单的方法,但正如 OpenSSH 开发人员所述,旧版 ssh-rsa 很容易发现哈希冲突,这可能会完全破坏您的安全性并允许中间人攻击。
另一种方法是告诉服务器生成较旧的主机密钥类型(手动)。
获取客户端上所有支持的主机密钥类型的列表:
mtak@client:~$ ssh -Q sig
ssh-ed25519
sk-ssh-ed25519@openssh.com
ssh-rsa
rsa-sha2-256
rsa-sha2-512
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sk-ecdsa-sha2-nistp256@openssh.com
Run Code Online (Sandbox Code Playgroud)
选择支持的主机密钥(签名)类型并将其添加到服务器上的 HostkeyAlgorithms 列表中:
在 中/etc/ssh/sshd_config,添加和/或设置:
HostkeyAlgorithms ssh-rsa
Run Code Online (Sandbox Code Playgroud)
(请注意,我还没有测试过这一点。我没有足够旧的 SSH 客户端来遇到这个问题)