排錯

SSH "Too many authentication failures":真正的原因與修法

伺服器對每次連線的認證嘗試設上限(MaxAuthTries,預設 6)——金鑰多的用戶端會把錯的先遞一遍、把次數燒光。用 IdentitiesOnly yes + 對的 IdentityFile 修,行動端把金鑰固定到連線。

CC Chen Chen· 創始人·2026 年 6 月 24 日·閱讀 4 分鐘

"Too many authentication failures" 是什麼意思

伺服器把你切斷了,因為你的用戶端在一次連線裡做了太多認證嘗試——OpenSSH 預設允許 6 次(MaxAuthTries)。反直覺的是:你通常自己什麼都沒試錯就看到它。原因幾乎總是用戶端裝了很多金鑰:它遞金鑰 1、金鑰 2、金鑰 3……每次被拒都計一次失敗,在對的那把金鑰(或你的密碼)輪到之前你就被斷開了。解法是只遞對的那把。

為什麼用戶端會把所有金鑰都遞一遍

SSH agent 和用戶端會累積金鑰:~/.ssh 裡的每一把、加進 ssh-agent 的每一把、別的伺服器的金鑰。預設用戶端會按順序全試一遍。五把錯的 = 五次失敗 = 只剩一次機會。累積了 6+ 把金鑰的人會被每臺新伺服器拒絕——在懂這個機制之前顯得莫名其妙。

修法 1——只遞對的金鑰(桌面)

# 一次性:强制单把密钥,无视 agent 里那一堆
ssh -o IdentitiesOnly=yes -i ~/.ssh/the_right_key user@host

# 永久:在 ~/.ssh/config 按主机配置
Host myserver
    HostName 203.0.113.7
    User deploy
    IdentityFile ~/.ssh/the_right_key
    IdentitiesOnly yes

IdentitiesOnly yes 是關鍵指令:它阻止用戶端把 agent 裡的每把金鑰都在伺服器面前排隊展示。

修法 2——行動端,把金鑰固定到連線上

行動用戶端天然不容易踩這個坑——前提是連線配置了一把特定金鑰。在 TermAI 裡,每條連線有自己的認證設定:選中屬於這臺伺服器的那把金鑰,用戶端就只遞它一把,失敗計數永遠堆不起來。如果你匯入了好幾把、不確定伺服器認哪把,報錯訊息本身寫著使用者和主機——你可以從另一個能用的工作階段讓助手去查 authorized_keys

用單把固定金鑰連上的 SSH 工作階段
一條連線、一把固定金鑰:用戶端遞的正是對的憑證,MaxAuthTries 計數永遠填不滿。

修法 3——伺服器端(慎用)

可以/etc/ssh/sshd_config 裡調高上限:

MaxAuthTries 10
# 然后:sudo systemctl restart ssh

但把它當權宜之計、不是修復——更高的上限也給暴破者每次連線更多揮棒機會(fail2ban 能緩解)。真正的修復是用戶端先遞對的金鑰。另外:密碼認證下反覆敲錯也會觸發這個限制——那個就只能仔細打字,或換成金鑰

常見問題

為什麼我一連上就 "Too many authentication failures"?
你的用戶端/agent 持有多把金鑰並全部遞出;每把被拒的都計入伺服器的 MaxAuthTries(預設 6)。在對的憑證被嘗試之前你就被切斷了。

不動伺服器怎麼修?
強制那把對的金鑰:ssh -o IdentitiesOnly=yes -i ~/.ssh/key user@host,或在 ~/.ssh/config 裡設 IdentitiesOnly yes。行動端把特定金鑰掛到連線上。

該調高 MaxAuthTries 嗎?
只當權宜之計——它同樣幫了攻擊者。在用戶端固定對的金鑰才是正解。

快速事實

  • 含義:一次連線裡認證嘗試太多(預設上限 6,MaxAuthTries)
  • 真實原因:用戶端/agent 把整堆金鑰都遞了,錯的在前
  • 修法:IdentitiesOnly yes + 那把對的 IdentityFile;行動端按連線固定金鑰
  • 避免:把調高 MaxAuthTries 當"修復"——那是放寬暴破窗口
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