NAT環境からSSH

自宅から会社に、SSHで接続をした。
接続を維持したまま、しばらく放置していたところ、キーボードを叩いても反応がなく、以下ののメッセージが表示され接続が切れてしまった。

Read from remote host remote.example.org: Operation timed out
Connection to local.example.org closed.

調べて見たところ、NAT環境ではグローバルネットワークにTCPで接続をしている際に一定時間通信がないと、接続が切断されたと見なされ、NATテーブル(?)がクリアされてしまうらしい。その結果、SSHにて通信が継続できなくなっていた。つまり、定期的に通信を行えば問題は発生しない。OpenSSHでは、ServerAliveInterval という一定時間毎にデータを送信するオプションがある。それを、~/.ssh/config で設定することで問題を回避できる。
以下のようにすべてのホストで 300秒毎にデータを送信するように設定した結果、長時間放置してもSSHの接続が切れないようになった。

Host *
  ServerAliveInterval 300