tkuchikiの日記

Linux やプログラミングについて書きます。

sshで「Too many authentication failures for ...」が出た場合の対処法

sshでID / PW や接続先は間違っていないのに、タイトルのようなエラーが出てアクセス出来ない時がある。
エラーの意味は、設定している最大試行回数を超えたというもの。
接続情報が間違っていないのに試行回数を超えてしまうかというと、登録している鍵が多すぎるせいである。

鍵認証をしていると、登録している鍵を順々に見ていくようで、
登録鍵が多すぎると、目的の鍵にあたるまでに試行回数を超えてしまうのが原因のようだ。

登録されている鍵が多すぎるときは以下のコマンドで消すことができる。

ssh-add -D


接続先サーバの /etc/ssh/sshd_config の MaxAuthTries を変更しても対応できるかもしれないが、
セキュリティ上好ましくないのでやらないほうがよい。

他の解決方法を調査していたら SSH_CONFIG (5) が見つかった。

IdentitiesOnly (ファイルに格納された秘密鍵のみを使用)
認証の際に、たとえ認証エージェントssh-agent (1) が複数の秘密鍵を持っていた場合でも、ssh_config ファイルで指定された秘密鍵のみを使用するよう指定します。この引数のとりうるキーワードは"yes"または"no"です。この項目を使うのは、ssh-agent が多くの異なる秘密鍵を返すような状況でしょう。デフォルトでは"no"になっています。


となっているので、~/.ssh/config に、identitiesOnly yes を設定することでも解決できるかもしれない(未検証)。
ただ、毎回パスワードを入力する必要がある。