テクノロジー · 実用ガイド

SSH の「too many authentication failures」?サーバー変更前に提示キーを数える

正しい鍵があっても、順番が来る前に切断されることがあります。有効なホスト、ユーザー、ID 一覧、提示順を確認し、エージェント消去や MaxAuthTries 変更の前に 1 鍵テストを行います。

オリジナル技術イラスト: 複数のクライアント鍵が目的の鍵より前に SSH サーバーの試行枠を消費し、1 鍵テストへ進むことを示すオリジナル技術イラスト。
オリジナル技術イラスト: 目的の鍵に達する前に切断される場合があり、他の鍵を削除せず 1 鍵テストで選択を証明します。 Watch at Ease

「Too many authentication failures」は 1 接続の認証試行枠を使い切ったという意味で、誰かが何度も誤ったパスワードを入力した証拠ではありません。OpenSSH クライアントは設定ファイルとエージェントから複数の公開鍵を提示でき、拒否された試行ごとにサーバー側の枠を消費します。

失敗した端末を残して経路を確認します。最初から`ssh-add -D`、全体への`IdentitiesOnly yes`、鍵ファイル削除、広範な`MaxAuthTries`増加を行わないでください。証拠を消し、別ホストを壊し、原因を証明せず保護を弱めるおそれがあります。

1. 失敗した宛先と有効設定を固定する

失敗時と同じシェル、ホスト別名、ユーザー名を使います。秘密を含めずにコマンドを記録し、Git、IDE、自動化が SSH を起動した場合は実際に渡した宛先を確認します。

`ssh -G your-host | grep -Ei "^(hostname|user|identityfile|identityagent|identitiesonly|preferredauthentications) "`を実行します。まず HostName と User を照合し、すべての IdentityFile を確認します。Include や一致ブロックで加算されることがあります。

宛先かユーザーが誤っていれば先に修正して再診断します。誤ったアカウントを鍵削除で補わないでください。

2. 利用可能な ID と実際の提示順を比較する

失敗したシェルで`ssh-add -l -E sha256`を実行します。接続中のエージェントの指紋一覧であり、すべてが提示される保証でも、直接読み込む鍵ファイルの一覧でもありません。

`ssh -vvv user@your-host`を 1 回実行し、「Offering public key」ごとに鍵種別と SHA256 指紋だけを順番に記録します。共有前にアドレス、ユーザー、私有パスを伏せ、目的の指紋が切断前に現れるか確認します。

意図しない鍵が先に多数出れば選択順の問題です。目的の 1 鍵だけが提示されても拒否されるなら、ユーザー、authorized_keys、証明書プリンシパル、署名、サーバーポリシーへ移ります。

3. 何も削除せず 1 鍵テストを行う

`ssh-keygen -lf /path/to/key.pub -E sha256`で目的の指紋を確認し、`ssh -o IdentitiesOnly=yes -i /path/to/key user@your-host`を実行します。この接続だけを限定し、エージェントと他の鍵は変更しません。

成功すればサーバー、アカウント、鍵は連携可能で、広いクライアント環境の選択か順序が原因です。その別名専用の Host ブロックに HostName、User、IdentityFile、`IdentitiesOnly yes`を保存し、`ssh -G`と`ssh -vvv`で再確認します。

失敗したら詳細ログを保存します。1 鍵後の Permission denied やエージェント署名拒否は別分岐です。MaxAuthTries 増加やエージェント消去では認可と使用可能性を証明できません。

4. 最小の恒久修正だけを行う

1 ホストにはホスト専用ブロックを使います。全宛先を監査していないなら IdentityFile を広い範囲に置いたり`IdentitiesOnly yes`を全体化しないでください。GitHub と GitLab もホスト単位の鍵選択を案内しています。

他システムで使うエージェント ID は残します。廃止済みと別途確認した鍵だけを外し、診断のために削除しません。GUI クライアントが OpenSSH 設定を無視するなら、その製品独自のエージェントと選択設定を確認します。

MaxAuthTries は別のサーバーポリシー審査でのみ検討します。この障害の完了条件は、目的の指紋が提示され認証されることです。

判断表

HostName または User が誤り — 宛先を直し、鍵状態は維持します。

切断前に意図しない指紋が多数 — 1 鍵テスト後、限定 Host ブロックを設定します。

目的の 1 指紋でも拒否 — サーバー認可または署名診断へ移ります。

1 鍵テスト成功 — 他の ID を残し、有効設定を再検証します。

OpenSSH 以外または ssh_config 無視 — 製品固有のエージェントと選択制御を特定します。

オリジナル技術イラスト: 有効な SSH 設定と詳細な鍵提示を 4 つの限定修正分岐に対応させるオリジナル技術イラスト。
オリジナル技術イラスト: 宛先、提示順、鍵認可、クライアント実装のうち最初に失敗した境界だけを変更します。 Watch at Ease