ssh接続が自動切断される場合の回避方法
sshの接続が自動的に切れてしまうことがあります。その場合は、sshもしくはsshdの設定を変更すると問題が解消できます。sshコマンドならssh_configにServerAliveInterval 60といった設定を加えます。sshdの場合は、sshd_configにClientAliveInterval 60を加え、sshdをリスタートします。
読み方
- ClientAliveInterval
- くらいあんと あらいぶ いんたーばる
- ServerAliveInterval
- さーば あらいぶ いんたーばる
概要
sshの接続をそのまま放置していると、自動的に切断されてしまうことがあります。 例えば、以下のエラーメッセージが表示されたりします。
Write failed: Broken pipe
まったく通信していないときに、不要と思われて、切断されてしまいます。
回避方法として、クライアント側で設定する方法とサーバ側で設定する方法の2つがあります。
クライアント側のsshでの対処方法
ServerAliveInterval を使用すると サーバから一定期間データが来ないとき、sshコマンドがsshdに応答確認することで接続を維持します。
$HOME/.ssh/config に以下の設定を追記します。 ServerAliveInterval は、確認する間隔の秒数を指定します。
Host * ServerAliveInterval 60 ServerAliveCountMax 3
ServerAliveIntervalの設定は、デフォルトでは、0 で、まったく確認しません。
この応答確認は、デフォルトは3です。ServerAliveCountMax で設定可能です。
サーバ側のsshdでの対処方法
この対処方法は、サーバ側のsshdの設定を変更する権限が必要となります。
ClientAliveInterval では、sshd側が一定期間クライアントと通信していないときに、応答確認を行います。
ClientAliveInterval は、確認する間隔の秒数を指定します。 /etc/ssh/sshd_config に以下を追記します。
ClientAliveInterval 60 ClientAliveCountMax 3
設定を反映するために、sshdを再起動します。
$ sudo service sshd restart
Putty側での対処方法
PuTTY の設定の場合は、「接続」カテゴリの「接続の設定」を変更します。 「セッションをアクティブに保つための null パケットの送信」の設定で 「 Keepalive の間隔(秒、0 でオフ) 」があります。 デフォルトでは、0 で、null パケットを送信していません。
この値を30とか60とかに設定することで、sshの接続が維持できるようになります。
関連項目
ツイート