sshのKeepalive

外部ネットワークから社内サーバにssh接続をする際、しばらく操作しないでおくと、ネットワークが切断されることがある。emobileではなぜか平気。

ルータが一定時間パケットの流れないコネクションを接続断と判断し、 NATテーブルをクリアする設定になっているため。

≪解決策≫
sshクライアントの設定で、Keepaliveの項目がある場合は、その秒数をサーバの切断間隔より短く設定する。
・opensshを使用している場合は、sshd_config内のKeepAliveパラメータを変更する。


KeepAlive
システムが相手のマシンに TCP keepalive メッセージを送るかどうか指定します。これが送られると、接続の異常終了や相手マシンのクラッシュが正しく通知されるようになります。しかしこれを使うと、たとえ経路が一時的にダウンしていても接続が死んでいるということになってしまい、これが邪魔になる場合もあります。その一方で、もし keepalive が送られないとすると、セッションはサーバ上で永久に残ってしまことがあり、 ``幽霊'' ユーザを居座らせてサーバ資源を消費することがあります。
デフォルトは ``yes'' (keepalive を送る) です。そのためクライアントはネットワークがダウンするか、リモートホストがクラッシュすると通知してきます。これは永久に残るセッションを防ぎます。

Keepalive を禁止するには、この値を ``no'' にする必要があります。

ということで、2番目はあまりおススメはできない。