SSH でクライアントからサーバへルータを挟んで接続しているのですが、暫くすると切断されてしまいます。ルータなどが一定時間通信のないコネクションを切断してしまうからなのだそうです。であれば、ルータの設定を変更するというのが対処方法のような気もしますが、無駄なコネクションを維持してしまうことも考えられます。上手く設定すれば良いのでしょうが、あちこちのルータに設定をするというのも面倒そう。
で、他の対処方法としては、サーバ側で対処するか、クライアント側で対処するか。
サーバ側で対処するとすると、sshd_config に
ClientAliveInterval 60
ClientAliveCountMax 3
と、書いておけばいいようです。60秒ごとに3度クライアント側へ応答確認を行ってくれるそうです。FreeBSD の場合、/etc/ssh/sshd_config ですね。ClientAliveInterval は設定された秒数ごとに応答確認を行うものです。初期値は 0 ですので、応答確認は行われません。
クライアント側で対処するとなると、~/.ssh/config に
ServerAliveInterval 60
ServerAliveCountMax 3
などと書いておけばいいそうです。60秒毎に3度サーバへの応答確認を行ってくれるそうです。
ここまで書いてきましたが、私は iTerm2 を使っていますので、こちらの設定で回避することにしています。
profiles の Session で赤で囲んだ部分の When idle, send ASCII code にチェックを入れておけばいいようです。
Windows に関してはわかりません。きっと、クライアント側で設定する方法があるのでしょう。