NAT環境でSSHセッションが切断される問題

参考:http://hnw.jp/documents/unixmemo/ssh-keepalive.html


原因
ルータが,一定時間パケットの流れないコネクションを接続断と判断して,NATテーブルをクリアしまうため


解決法1:ProtocolKeepAlivesを使用
参考:http://d.hatena.ne.jp/u-ichi/20060811/
Debian系のOpenSSHクライアントで独自拡張された機能
設定した時間毎にKeepAlivesパケットを送信
Ubuntuで使える
その他ディストリビューションCygwinでは使えない
クライアントの~/.ssh/configに以下のように記述

ProtocolKeepAlives 300


解決法2:ServerAliveIntervalを使用
参考1:http://d.hatena.ne.jp/skubota/20070504/
参考2:http://www.unixuser.org/~haruyama/security/openssh/henkouten/henkouten_3.8.txt
OpenSSH3.8からサポートされた機能
サーバから返答がなくなった場合,再試行するまでの間隔を設定
UbuntuでもCygwinでも使える
クライアントの~/.ssh/configに以下のように記述

ServerAliveInterval 300


auto-logout
自動的にセッションを閉じる機能をoffにする
セキュリティ上はよくない
サーバ側に設定する
tcshなら~/.tcshrcに以下のように記述

unset autologout


bashなら~/.bashrcに以下のように記述

export TMOUT=0