Too many authentication failures の原因と対処

Published: 2023/8/20


SSH はプロトコルとして、一回の接続試行で、複数回の認証を試せるようになっている。 ssh-agent に複数の鍵を登録して良い感じにできるのは、裏側で、それぞれの鍵による認証を試しているからになる。

サーバー側の視点に立つと、クライアントが無限に認証の試行ができるようになっているのは、ブルートフォース対策などを考えれば、セキュリティ上あんまりよろしくない。 対策として、 ssh のサーバーである sshd では、この認証の試行回数に上限を設定できるようになっている。 参考までに、/etc/ssh/sshd_configMaxAuthTries が、その設定値となっている。 デフォルトは 6.

クライアント側ができる対処としては、無駄な認証試行を行わないようにすること、となる。 例えば鍵を新規に発行する度にそのすべてを ssh-agent に登録しているような場合では、早晩にこの試行回数を越えてしまうため、鍵の整理をするのが王道な対処方法、となる。

何の鍵がどの順番で試されているかを知るためには、例えば ssh -vvv コマンドなど、各種クライアントツールが備えているであろう接続デバッグのためのログ出力機能を活用すると良い。

追記

ssh config にて、ある Host に対して IdentitiesOnly yes の記述を行うと、その Host への接続では ssh-agent を利用しなくなる模様。 鍵と接続情報が渡されてくる系のインスタンスに対しては、これが正しい設定な気がした。

参考: 自分が capistrano でぶちあたったエラー

The deploy has failed with an error: Exception while executing on host my_app_host: disconnected: Too many authenticconnected: Too many authentication failures (2)

ssh でも、 capistrano (において、 ssh_config の設定値を使うようにしている場合)でも、 ssh-agent が起動している場合には、そこに登録されている鍵から試されていく様子。 capistrano の注意点として、特に設定をしなければ、 Net::SSH のデフォルトの設定が利用され、 noauth つまり認証なしで接続できないかが試されて、試行回数が1回分だけ無駄打ちされる模様。 ちょうど 6 番目の ssh-agent に登録している鍵だと、 ssh では接続できるが、 capistrano では接続できない、ということが発生したりする。(した)


Tags: sshcapistrano

関連記事