SSH 未找到匹配的主机密钥类型

Bre*_*sze 7 ssh rsa ssh-keys

我有两台服务器,

  • S1:我的机器,Windows 8OpenSSH 8.8p1OpenSSL 1.1.11 2021-08-24,
  • S2:远程服务器,LinuxOpen SSH 5.3p1OpenSSL 1.0.1e-fips 2013-02-11。

我试图调查如何解决的消息是

无法与xxx.xxx.xxx.xxx端口协商xxxxx:找不到匹配的主机密钥,他们提供 ssh-rsa、ssh-dss

  • S1 和 S2 ssh 用户密钥均为RSA-2048(约 372 个字符),
  • S1和S2文件默认注释了所有选项, etc/config
  • S1和S2 ssh 用户的和文件都是相同的,包括公钥和别名configauthorized_keys
  • S2 是一个远程嵌入式 Linux,不受我的控制,并且我无法更新。SSH 无法更新,并且仅限于特定 IP。

问题是,我是否应该将所有密钥更改为 ECDSA-256 才能解决此问题?是否还有我缺少的此处未提及的其他配置?

当我添加选项时HostkeyAlgorithms +ssh-rsa,几乎所有地方都建议,SSH 要求输入密码而不是检查密钥。

dav*_*085 6

(稍微扩大)

您实际上已经解决了标题中的问题;它提示HostkeyAlgorithms +ssh-rsa输入密码,这意味着它接受了主机密钥。(您甚至可以告诉 8.8 接受ssh-dss——尽管 OpenSSH 开发人员强烈反对它,但它仍然实现了。)

现在您体内的实际问题是用户身份验证,因为 OpenSSH 8.8 默认情况下仅使用更新、更强的rsa-sha2-*算法作为 RSA 密钥,而 5.3 大约比这些算法定义早了 8 年。添加PubkeyAcceptedAlgorithms +ssh-rsa到 get 8.8 使用旧的、较弱的算法 5.3 可以处理。

如果可能的话,对负责您所连接的古老系统的任何人进行讽刺:-)


小智 6

我用过这个,在我最新的 Mac OS X (13.0) 中效果最好

就这样做:

nano ~/.ssh/config

并输入以下文字:

Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
Run Code Online (Sandbox Code Playgroud)

然后control选择保存您的编辑xyes