たまに SSH のコネクションが頻繁に切れる環境があるので、定期的にデータを送受信することで切断されるのを防ぎたい。
これは OpenSSH のクライアントであれば ServerAliveInterval
を設定することで実現できる。
使った環境は次の通り。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G3025 $ ssh -V OpenSSH_7.6p1, LibreSSL 2.6.2
コマンドラインからであれば、次のように -o
オプションで ServerAliveInterval
に秒数を指定しながらリモートに接続する。
$ ssh -o ServerAliveInterval=60 <username>@<remotehost>
毎回コマンドラインで指定するのは面倒なので OpenSSH のコンフィグファイル (典型的には ~/.ssh/config
) に記述しても良い。
Host * ServerAliveInterval 60
このオプションの詳細については ssh_config
のセクション 5 に記載がある。
$ man 5 ssh_config
内容を以下に引用する。 この値が設定されていると、一定の期間にサーバからデータを受信しなかったときは SSH のコネクションを通してメッセージを送る、とある。
ServerAliveInterval Sets a timeout interval in seconds after which if no data has been received from the server, ssh(1) will send a message through the encrypted channel to request a response from the server. The default is 0, indicating that these messages will not be sent to the server.
ちゃんとサーバまでメッセージが届けば、それに対する返答がくる。
それによってコネクションが維持されるという寸法。
ちなみに、メッセージを送信する回数に ServerAliveCountMax
で上限を設けることもできるようだ。
いじょう。
OpenSSH[実践]入門 (Software Design plus)
- 作者: 川本安武
- 出版社/メーカー: 技術評論社
- 発売日: 2014/11/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る