rsyncのエラー と sshdの設定

ssh経由のrsyncで同期する処理をcronで登録して、動作させていたのですが、
エラーが出ていて原因は何か調べていました。

rsyncのエラー

ssh_exchange_identification: Connection closed by remote host
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]

hosts.allowが原因?

調べてみると原因らしきものはいろいろとあって。
hosts.deny と hosts.allowによってsshdの通信相手を制限している場合、
許可されていないから、エラーが出ている。という場合があるそう。

これが原因かと思い、ネットワークアドレスで指定していた許可を、
IPアドレスに変更したりしたものの、エラーは出続けたので、
これが原因では無さそうという事になった。

sshdの設定が原因?

また他の対処方法を調べてみると、
sshdの起動プロセス数制限という設定が原因というのがあった。

確かに同期する場所を複数指定している処理なので、
同時に何個もプロセスが立ち上がるだろうと思い、
sshd_configのMaxStartups という設定を変更した。

最初は10になっていたが、エラーが出続けたため、
30に設定したらエラーが出なくなった。

これが原因か―、という事で備忘しておく。

この原因を特定するまで凄く時間がかかったのですが、
なんでかっていうとバッヂ処理で行っているコマンドを、
1個直接実行するだけだと、失敗しないしエラーも出ないからです…。

バッヂ処理してるスクリプトを実行するとエラーが出るっていう、
なんとも不思議な現象でしたが、理由が分かると納得ですね。