非アクティブによるSSHタイムアウトは迷惑な話です。 ここでは、SSH セッションを生かし、SSH タイムアウトを防ぐ方法を紹介します。
タイムアウト値より小さい指定した間隔で、クライアントとサーバー間で「ヌルパケット」を送信することで、SSH タイムアウトを回避することができます。 このパケットがクライアントから送信されるかサーバーから送信されるかは関係なく、両者の間で何らかの通信が行われている限りです。
SSHクライアントが「nullパケット」を送信するように設定すれば、あなたのコンピュータから行うすべてのSSH接続でSSHタイムアウトを防止することができるでしょう。
クライアント (顧客、ユーザー、子供) が SSH タイムアウトにうんざりしている場合、SSH クライアントの設定方法を指示するか – この記事を参照するように – またはサーバー自体を設定して、SSH セッションタイムアウトを回避することができます。 これを行うには、SSH サーバーが「ヌルパケット」を送信するように設定し、すべてのクライアントがサーバーに行うすべての SSH 接続でタイムアウトを防ぎます。
幸い、設定は排他的ではないので、クライアントとサーバーの両方を設定しても、すべてがスムーズに実行されます。
クライアント側で SSH タイムアウトを防ぐ
MacまたはLinuxを使用している場合、ローカルのSSH設定ファイルを~/.ssh/config
で編集し、次の行を追加できます:
ServerAliveInterval 120
これにより、SSH接続で120秒ごとに「NULLパケット」を送信し、接続を維持することができるようになります。
サーバー側で SSH タイムアウトを防ぐ
サーバー管理者の場合、サーバーの /etc/ssh/sshd_config
で SSH デーモンの設定に以下を追加すると、クライアントがタイムアウトしないようにできます – ローカル SSH 設定を変更する必要がなくなります。
ClientAliveInterval 120ClientAliveCountMax 720
これにより、サーバーはクライアントに120秒ごとに「null packet」を送信し、クライアントが720日間(120秒*720=86400秒=24時間)非アクティブになるまで切断されません。