cloud-sre
iTerm の SSH Profile が突然ログインできなくなったとき
too many authentication failures で失敗する SSH profile を切り分ける短いフィールドノート。
以前は正常にログインできていた iTerm の SSH profile が、起動直後にすぐ閉じることがあります。同時に OpenSSH の post-quantum key exchange warning が表示されると、サーバー側の SSH バージョンや暗号アルゴリズムの問題だと思いがちです。
本当に見るべきエラーは、多くの場合こちらです。
Too many authentication failures
これは、ローカルマシンに ssh-agent、1Password SSH Agent、または多数の秘密鍵が読み込まれているときに起こります。SSH クライアントは -i で指定した鍵に到達する前に、agent 内の複数の鍵をサーバーへ提示します。サーバーには認証試行回数の上限があるため、本来使いたい鍵が試される前に接続が切られます。
切り分け方法
次の三つを分けて確認します。
- ネットワークが届いているか:対象ホストの 22 番ポートに接続できるか。
- サーバーが応答しているか:SSH banner、disconnect message、認証エラーが出るか。
- 想定した鍵で認証しているか:agent 内の他の鍵に邪魔されていないか。
同じマシンで次のコマンドが失敗し、
ssh -i "/path/to/key.pem" user@private-host
次のコマンドが成功するなら、
ssh -o IdentitiesOnly=yes -o IdentityAgent=none -i "/path/to/key.pem" user@private-host
原因はネットワーク到達性や秘密鍵そのものではなく、意図しない鍵が先に提示されすぎていることだと判断できます。
修正方法
iTerm profile に保存するコマンドでは、指定した秘密鍵だけを使うように明示します。
ssh -o IdentitiesOnly=yes -o IdentityAgent=none -i "/path/to/key.pem" user@private-host
二つのオプションの意味は次の通りです。
IdentitiesOnly=yes:明示的に指定した identity file だけを使う。IdentityAgent=none:ローカルの ssh-agent や 1Password SSH Agent から追加の鍵を取得しない。
post-quantum key exchange warning は別のセキュリティ通知です。サーバー強化の一部として対応する価値はありますが、この profile がログインに失敗した直接の理由ではありません。