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個直接実行するだけだと、失敗しないしエラーも出ないからです…。
バッヂ処理してるスクリプトを実行するとエラーが出るっていう、
なんとも不思議な現象でしたが、理由が分かると納得ですね。