現象
sshでリモートサーバにログインしているときに「Write failed: Broken pipe」と表示されて接続が切れてしまうことがあります。
sshはある程度の時間操作をせずにいるとタイムアウトにより自然に切断される仕組みになっているためであり、クライアント側orサーバ側でsshの設定を変更する必要があります。
対処法
クライアント側で対処
まず、クライアント側で対処するには/etc/ssh/ssh_config
または~/.ssh/config
に以下の内容を記述します。
$ vim ~/.ssh/config
ServerAliveInterval 15
ServerAliveCountMax 10
この設定で15秒ごとに10回応答確認をサーバに送り、
それでも応答がない場合にタイムアウトになります。
サーバ側で対処
次にサーバ側で対応する方法ですが、/etc/ssh/sshd_config
に
$ vim /etc/ssh/sshd_config
ClientAliveInterval 30
ClientAliveCountMax 5
と記述すると、30秒ごとにクライアントに5回応答確認をクライアントに送り、
それでも応答がなければタイムアウトになります。
余談
screenを使えば途中で接続が切れても再度リモートサーバにログイン、セッションをattachすれば済むのでオススメです。