排錯

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

現代 OpenSSH 預設禁用了 ssh-rsa(SHA-1),導致老伺服器協商失敗。用 HostKeyAlgorithms=+ssh-rsa 按主機解鎖,以及金鑰交換/加密演算法報錯的同款修法——和真正的修復:升級伺服器。

CC Chen Chen· 創始人·2026 年 6 月 24 日·閱讀 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