排错

SSH "no matching host key type found":原因与修法

现代 OpenSSH 默认禁用了 ssh-rsa(SHA-1),导致老服务器协商失败。用 HostKeyAlgorithms=+ssh-rsa 按主机解锁,以及密钥交换/加密算法报错的同款修法——和真正的修复:升级服务器。

CC Chen Chen· 创始人·2026 年 6 月 13 日·阅读 6 分钟

"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 一样的逃生口。

手机上用现代算法连上的 SSH 会话
现代客户端默认强算法(Ed25519、rsa-sha2)——对安全好,但老服务器可能需要一个限定范围的兼容选项才能连上。

常见问题

怎么修 "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 自动生成)
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog