当尝试从RHEL9系统连接到旧系统(如RHEL6、RHEL7等)时,会出现以下错误信息:
$ ssh Unable to negotiate with IPAddr port 22: no matching host key type found. Their offer: ssh-rsa
然而,从RHEL8系统进行连接则一切正常。针对此问题,以下是几种解决方案:
方案一:在旧系统上重新生成密钥
如果旧系统支持,可以考虑重新生成一个新的密钥类型,如ECDSA密钥,以兼容RHEL9系统的安全要求。具体步骤如下:
1.生成ECDSA密钥:
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
2.将新生成的ECDSA密钥添加到SSH配置文件中:
HostKey /etc/ssh/ssh_host_ecdsa_key
(此步骤需编辑/etc/ssh/sshd_config文件)
3.重启SSH服务以使更改生效:
service sshd restart
方案二:在RHEL9系统上启用SHA1
虽然可以通过在RHEL9系统上启用SHA1来解决兼容性问题,但此方案会降低系统安全性,因此不推荐使用。如仍需尝试,可使用以下命令:
update-crypto-policies --set $(update-crypto-policies --show):SHA1
注意:当系统启用FIPS加密策略时,此方案不可行。
方案三:使用中间RHEL8系统作为跳板
由于RHEL8系统具有较好的兼容性,可以设置一个RHEL8系统作为中间跳板。通过RHEL8系统再连接到旧系统,具体方法如下:
1.使用SSH连接到旧系统:
(rhel9) $ ssh -t rhel8 ssh legacy-system
2.使用SFTP传输文件:
(rhel9) $ ssh -t rhel8 sftp legacy-system
3.使用SCP复制文件:
(rhel9) $ ssh -t rhel8 scp -3 rhel9:legacy-system:
注意:若要实现无密码复制,需在RHEL9系统上授权RHEL8系统的公钥。
总结
RHEL9系统在采用更严格的加密策略时,可能会遇到与旧系统不兼容的问题。根据实际情况,可以选择在旧系统上重新生成密钥、在RHEL9系统上启用SHA1(不推荐)或使用中间RHEL8系统作为跳板等解决方案。
原创文章,作者:运维侠,如若转载,请注明出处:https://www.yunweixia.com/solutions/rhel9-ssh-legacy-os-connection-error-no-matching-host-key-type-fix.html