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

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

我有两台服务器,

  • S1:我的机器,Windows 8OpenSSH 8.8p1OpenSSL 1.1.112021年08月24日,
  • S2:远程服务器,Linux打开 SSH 5.3p1OpenSSL 1.0.1e-fips2013-02-11。

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

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

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

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

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

答案1

(略微扩大)

您实际上已经修复了标题中的问题;HostkeyAlgorithms +ssh-rsa它提示输入密码,这意味着它公认主机密钥。(您甚至可以告诉 8.8 接受ssh-dss- 它仍然被实现,尽管 OpenSSH 开发人员强烈建议不要这样做。)

你身体现在的真正问题是用户身份验证,因为 OpenSSH 8.8 默认仅对 RSA 密钥使用更新、更强大的rsa-sha2-*算法,而 5.3 比这些算法的定义早了大约 8 年。添加PubkeyAcceptedAlgorithms +ssh-rsa得到 8.8 使用旧的、弱的算法 5.3 就可以处理。

如果可能的话,对你所连接的古老系统的负责人发表一些尖刻的评论:-)

答案2

我用过这个,在我最新的 Mac OS X ( 13. 0 ) 上效果最好

只需这样做:

nano ~/.ssh/config

并输入以下文字:

Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

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

答案3

在您的~/.ssh/config文件中:

Host whatever_alias
    Hostname real_hostname_to_your_server
    User your_remote_user
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedKeyTypes +ssh-rsa

相关内容