ssh_exchange_identification で失敗する理由2009年01月21日 00時28分07秒


ssh_exchange_identification: Connection closed by remote host

ssh が上記のエラーを表示して失敗することがある。

これについて検索をすると、/etc/hosts.allow および/etc/hosts.deny の設定の可能性が多々指摘されている。幾つかの件では、実際にこれで問題が修正されたみたいだ。

他にも、sshd を inetd で立ち上げようとしたが、-i を指定していなかったために、同じメッセージを出して失敗していた物も見つかった。

今回は別件の問題に遭遇した。ssh を使って連続的に大量の並列接続をする時もこのエラーに遭遇する。初期値では接続認証中の最大数が MaxStartups で 10 になっている。ssh をバックグラウンド処理にして、ループで大量の接続を試みると、すぐにこの予約分が使い尽くされて、失敗するようになる。ssh の接続認証に時間が掛かるので、意図せずにこの認証制限に引っかかるのだ。

この原因の特徴としては、まず、一回ずつ手で試すと問題が無い点だろう。そして、大量の接続を行なう様な環境が二つ目だ。スクリプトで処理しようとして接続が失敗する事が出てきたら、この値を疑ってみると良い。