我有两台服务器,
- S1:我的机器,Windows 8,OpenSSH 8.8p1,OpenSSL 1.1.112021年08月24日,
- S2:远程服务器,Linux,打开 SSH 5.3p1,OpenSSL 1.0.1e-fips2013-02-11。
我试图调查如何解决的信息是
无法与
xxx.xxx.xxx.xxx
端口协商xxxxx
:未找到匹配的主机密钥,他们提供 ssh-rsa、ssh-dss
- S1 和 S2 ssh 用户密钥都是RSA-2048(约 372 个字符),
- 两个都S1和S2
etc/config
文件的所有选项都默认注释掉了, - 两个都S1和S2ssh 用户的
config
和authorized_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
选择保存您的编辑x
。yes
答案3
在您的~/.ssh/config
文件中:
Host whatever_alias
Hostname real_hostname_to_your_server
User your_remote_user
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa