You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenSSH 9.0与老旧OpenSSH 5.9p1公钥登录失败(无互签名算法)的解决方法咨询

OpenSSH 9.0与老旧OpenSSH 5.9p1公钥登录失败(无互签名算法)的解决方法咨询

嘿,这个问题我太熟了!OpenSSH从8.0版本开始就默认禁用了基于SHA-1的传统ssh-rsa签名算法,而你的老机器(5.9p1)只支持这种旧的RSA签名,这就是两者“谈不拢”的核心原因——没有共同认可的签名算法。

先结合你给出的nmap结果确认一下:你的工作机(OpenSSH9.0)的server_host_key_algorithms里只有现代的RSA-SHA2和ECDSA/ED25519算法,完全没包含老机器支持的ssh-rsa;而老机器这边只认ssh-rsa和ssh-dss(DSS现在基本被淘汰了,不推荐用)。

下面给你几个实用的解决办法,都是不用升级任何一方OpenSSH版本就能搞定的:

方法一:临时命令行登录(快速测试)

每次登录老机器时,手动指定启用旧的ssh-rsa算法:

ssh -o PubkeyAcceptedAlgorithms=+ssh-rsa -o HostkeyAlgorithms=+ssh-rsa your-username@WW.XX.YY.ZZ

这个命令强制你的新SSH客户端启用老机器能识别的签名算法,临时打通连接。

方法二:修改本地SSH配置(永久生效)

不想每次都敲长命令的话,直接编辑你的工作机上的~/.ssh/config文件(如果没有就新建一个),添加针对这台老机器的专属配置:

Host old-linux-machine
    HostName WW.XX.YY.ZZ
    User your-username  # 替换成你在老机器上的用户名
    PubkeyAcceptedAlgorithms +ssh-rsa
    HostkeyAlgorithms +ssh-rsa

保存后,以后只要输入ssh old-linux-machine就能直接用公钥登录了,非常方便。

方法三:生成兼容的专属密钥(可选)

如果你想专门给老机器配一个密钥,可以生成一个明确使用ssh-rsa算法的密钥对:

ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa_old_machine

然后把生成的公钥~/.ssh/id_rsa_old_machine.pub内容复制到老机器的~/.ssh/authorized_keys文件里。登录的时候可以指定这个密钥:

ssh -i ~/.ssh/id_rsa_old_machine your-username@WW.XX.YY.ZZ

不过要注意,这个方法还是需要确保你的新SSH客户端允许ssh-rsa算法,所以最好还是结合方法二的配置一起用。

另外,因为你提到老机器的安全性不重要,所以启用ssh-rsa完全没问题——毕竟这只是为了兼容老旧设备,而且你的工作机已经关闭了远程SSH,不会有额外风险。

备注:内容来源于stack exchange,提问作者Daniel Griscom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 11:59:10