LoginSignup
2
2

More than 3 years have passed since last update.

ssh 呼び出しのバッチが動かないトラブルを調べた話【vol.2】(解決編)

Posted at

株式会社オズビジョンのユッコ (@terra_yucco) です。
ssh 呼び出しのバッチが動かないトラブルを調べた話【vol.1】 の続きの記事 (解決編) となります。

仕込んだ処理で得られたログ

かなり抜粋しましたが END,255 となっている処理の中では ssh 関連のエラーメッセージが出ています。

[2019-06-25 20:53:01][913] START,-,host_user_batch01 /path/to/starting_sh/user_log.sh action
[2019-06-25 20:53:01][913] command,ssh -i /path/to/key root@host_user_batch01 /path/to/starting_sh/user_log.sh action
[2019-06-25 20:53:02][913] ssh_exchange_identification: Connection closed by remote host
[2019-06-25 20:53:02][913] END,255,host_user_batch01 /path/to/starting_sh/user_log.sh action

エラーメッセージ

ssh_exchange_identification: Connection closed by remote host

※ちなみにこれは stderr じゃなくて stdout に出ていました...。

このメッセージ

など、様々なケースがあるようなのですが、今回の場合には sshd の接続数上限でした。

sshd の設定

$ sshd -T | grep max
x11maxdisplays 1000
maxauthtries 6
maxsessions 10
clientalivecountmax 3
maxstartups 10:30:100

sshd -T では maxstartups
/etc/ssh/sshd_config では MaxStartups

MaxStartups

この設定の意味は以下のとおりです。

a:b:c

認証前接続において
最初の a 本の接続は 100% 受け入れ
c 本になるまでの接続は b% の確率で受け入れる
c 本以上の接続は 100% 拒否

今回の原因

サーバのスペックが上がったことにより、同時に ssh 接続を要求する接続数が一気に跳ね上がり、鍵交換を待つプロセス数が上限を突破したものと思われます。
設定 10:100:10 とかでした。要するに一気に 11 本以上殺到したら確実に 1 本は弾かれる。

対処

以下の対処で 255 のログは出なくなりました。

$ echo "MaxStartups 100:30:150" >> /etc/ssh/sshd_config
$ service sshd restart

Conclusion

  • ssh_exchange_identification: Connection closed by remote host と言われた場合には接続数上限超過のケースもある
  • 上限超過した場合 ssh は 255 を返す
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2