"no matching host key type found" 是什么意思
你的 SSH 客户端和服务器没能就一种加密算法达成一致,所以连接根本没开始。2026 年最常见的原因:你的新客户端禁用了一个老旧、脆弱的算法,而老服务器只会这个。OpenSSH 8.8+ 默认关闭了 ssh-rsa(SHA-1)签名,而老服务器、路由器、NAS、交换机往往拿不出更新的算法。临时解锁就一个参数;真正的修复是升级服务器。
这个错的三种变体
| 报错 | 没谈拢的是什么 |
|---|---|
no matching host key type found. Their offer: ssh-rsa | 主机密钥签名算法 |
no matching key exchange method found. Their offer: diffie-hellman-group1-sha1 | 密钥交换(KEX) |
no matching cipher found | 加密算法 |
三个是同一个故事——服务器只能提供你客户端因不安全而退役的算法。Their offer: 后面正好告诉你服务器卡在哪个被弃用的算法上。
临时解锁(按连接)
只为这台主机重新启用那个特定的老算法。最常见的 ssh-rsa 情形:
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa user@host 如果是老的密钥交换或加密算法,对应的:
ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 user@host
ssh -o Ciphers=+aes128-cbc user@host 要为某一台主机永久生效(又不削弱别处的安全),写进 ~/.ssh/config:
Host old-nas
HostName 192.168.1.10
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa 真正的修复:升级服务器
+ssh-rsa 是权宜之计,不是解法——这些算法被禁用就是因为它们已被攻破。持久的修复是让服务器提供现代算法:
- 升级服务器的 OpenSSH(当前版本会自动提供 Ed25519 和 rsa-sha2-256/512)。
- 缺主机密钥就生成现代主机密钥:
sudo ssh-keygen -A重新生成包含 Ed25519 在内的主机密钥。 - 对于设备(无法升级的老路由器、NAS、交换机),按主机的
~/.ssh/config例外是务实的折中——把弱算法限定在那一台。
在手机上
现代移动客户端默认协商现代算法——这对安全是好事,但也意味着面对老旧设备会撞同一堵墙。两点有帮助:优先用 Ed25519 密钥(TermAI 替你生成),在任何支持它的服务器上都能彻底绕开 ssh-rsa 签名问题;对于真的很老的设备,一个允许按连接设置算法选项的客户端,给你和 ~/.ssh/config 一样的逃生口。
常见问题
怎么修 "no matching host key type found"?
给 ssh 命令加 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa,或写进 ~/.ssh/config 的 Host 块。长期则升级服务器的 OpenSSH。
为什么更新客户端后才坏的?
OpenSSH 8.8+ 默认禁用了老旧的 ssh-rsa(SHA-1)算法。只会这个的服务器从此协商失败,直到你重新启用或升级它。
重新启用 ssh-rsa 安全吗?
它比现代算法弱,应限定在那台需要的老主机上,别全局启用。正解是升级服务器。
和 host key verification failed 有什么区别?
这个错是关于能用哪些算法(协商)。Host key verification failed 是关于服务器身份密钥变了。
快速事实
- 含义:客户端和服务器没有共同可接受的算法——通常是新客户端 vs 老服务器
- 原因:OpenSSH 8.8+ 默认禁用了
ssh-rsa(SHA-1)等弱算法 - 临时解锁:
-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa(在~/.ssh/config按主机限定) - 真正修复:升级服务器 OpenSSH;
ssh-keygen -A重生主机密钥 - 避免它:在支持的服务器上用 Ed25519 密钥(TermAI 自动生成)
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.