升级SSH后ssh-rsa失效?一文带你轻松解决!

来盘运维菜 2025-04-27 18:47:18
背景

今天刚给Linux桌面系统完成升级,结果SSH连接突然“罢工”了,还弹出了这个报错信息:

no matching host key type found. Their offer: ssh-rsa

一番排查后发现,原来是客户端与服务端的主机密钥算法“闹掰”了,出现了不兼容的情况。

解决方案客户端配置方案永久修改SSH配置文件

直接编辑 ~/.ssh/config 文件,添加以下配置内容,让所有主机连接都“乖乖听话”:

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

作用:强制客户端支持ssh-rsa算法,简单粗暴解决问题。

针对特定服务器配置

要是想更精准地“拿捏”某台服务器,可以这样配置:

Host your_server_name HostName 10.64.35.158 User root HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa

说明:这个配置只对 your_server_name 生效,不用担心会影响到其他主机的连接,非常贴心。

临时解决方案

要是想快速测试或者就来一次单次连接,直接在命令行里“一键搞定”:

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa user@host

适用场景:临时测试、偶尔的单次连接,方便又快捷。

更换新协议的密钥

既然客户端都“嫌弃”ssh-rsa了,那干脆让服务端也跟上“潮流”,换用新协议。这就得重新生成密钥并上传公钥啦,命令如下:

ssh-keygen -t ed25519服务端配置方案

要是服务端也升级了,新版本的OpenSSH直接把ssh-rsa协议“踢出群聊”了,那就修改服务端配置来“破局”:

sudo vim /etc/ssh/sshd_config

在文件中添加或修改以下内容:

HostKeyAlgorithms rsa-sha2-256,rsa-sha2-512,ssh-rsaPubkeyAcceptedAlgorithms rsa-sha2-256,rsa-sha2-512,ssh-rsa

修改完配置后,别忘了重启SSH服务让配置生效:

sudo systemctl restart sshd

优势:这样配置后,新旧客户端都能“和平共处”,而且会优先使用更安全的rsa-sha2-256/512算法,安全性直接拉满。

安全建议

优先升级密钥类型

强烈推荐服务端生成ed25519密钥,它的安全性可比ssh-rsa高多了,命令如下:

ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key兼容性处理

要是因为某些特殊原因必须保留ssh-rsa,那在服务端配置里把它放在支持列表的末尾,就像这样:

HostKeyAlgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

这样一来,既保证了兼容性,又尽可能优先使用更安全的算法。

怎么样,按照这些方法操作,SSH连接问题肯定能轻松解决!

0 阅读:6

来盘运维菜

简介:感谢大家的关注