「Too many authentication failures」の意味
サーバーが接続を切ったのは、クライアントが 1 回の接続で認証を試みすぎたからです ── OpenSSH はデフォルトで 6 回まで許可します(MaxAuthTries)。直感に反するのは、たいてい自分では何も間違えていないのにこれが出ることです。原因はほぼ常に多数の鍵を読み込んだクライアントです。鍵 1、鍵 2、鍵 3…と差し出し、拒否されるたびに失敗としてカウントされ、正しい鍵(やパスワード)の番が来る前に切断されます。直し方は、正しい鍵だけを差し出すことです。
なぜクライアントは持っている鍵をすべて差し出すのか
SSH エージェントとクライアントは鍵を溜め込みます。~/.ssh 内のすべて、ssh-agent に追加したすべて、他のサーバーの鍵。デフォルトでは、クライアントはそれらを順番にすべて試します。間違った鍵 5 つ = 失敗 5 回 = 残りはあと 1 回。6 つ以上の鍵を抱えている人は新しいサーバーすべてに拒否され、仕組みを知るまでは不可解に見えます。
直し方 1 ── 正しい鍵だけを差し出す(デスクトップ)
# one-off: force a single key, ignore the agent's pile
ssh -o IdentitiesOnly=yes -i ~/.ssh/the_right_key user@host
# permanent: per-host in ~/.ssh/config
Host myserver
HostName 203.0.113.7
User deploy
IdentityFile ~/.ssh/the_right_key
IdentitiesOnly yes IdentitiesOnly yes が鍵となるディレクティブです。これにより、クライアントがエージェントのすべての鍵をサーバーの前で次々と見せて回るのを止められます。
直し方 2 ── モバイルでは、鍵を接続に固定する
モバイルクライアントは本質的にこれに陥りにくいのですが、それは接続が特定の 1 つの鍵で構成されている場合に限ります。TermAI では各接続が独自の認証設定を持ちます。そのサーバーに属する鍵を選べば、クライアントはまさにその 1 つだけを差し出すので、失敗カウンターが積み上がることはありません。複数の鍵をインポートしてどれをサーバーが知っているか分からない場合、エラーメッセージ自体にユーザーとホストが書かれています ── そして、別の動作中のセッションからアシスタントに authorized_keys を確認してもらうこともできます。
直し方 3 ── サーバー側(控えめに)
/etc/ssh/sshd_config で上限を上げることもできます。
MaxAuthTries 10
# then: sudo systemctl restart ssh ただしこれは修正ではなく回避策として扱ってください ── 上限を上げると、ブルートフォース攻撃者にも接続あたりのスイング数が増えます(fail2ban で緩和できます)。本当の修正は、クライアントが正しい鍵を先に差し出すことです。なお、パスワード認証では繰り返し打ち間違えても同じ上限に引っかかります ── そちらは慎重に打ち直すか、鍵に切り替えるだけです。
FAQ
なぜ「Too many authentication failures」がすぐ出るのですか?
クライアント/エージェントが複数の鍵を持っていてそれらをすべて差し出し、拒否された各鍵がサーバーの MaxAuthTries(デフォルト 6)にカウントされます。正しい認証情報が試される前に切断されます。
サーバーを触らずに直すには?
正しい鍵 1 つを強制します:ssh -o IdentitiesOnly=yes -i ~/.ssh/key user@host、または ~/.ssh/config に IdentitiesOnly yes を設定します。モバイルでは、特定の鍵を接続に紐付けます。
MaxAuthTries を上げるべきですか?
応急処置としてのみです ── 攻撃者の助けにもなります。代わりにクライアント側で正しい鍵を固定してください。
クイックファクト
- 意味:1 回の接続での認証試行が多すぎる(デフォルト上限 6、
MaxAuthTries) - 本当の原因:クライアント/エージェントが鍵の山全体を、間違ったものから差し出す
- 直し方:
IdentitiesOnly yes+ 正しいIdentityFileを 1 つ;モバイルでは接続ごとに鍵を固定 - 避けること:MaxAuthTries を上げることを「修正」とすること ── ブルートフォースの窓口を広げてしまう
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.