SSHセッションが切断されないようにするためには、いくつかの方法があります。これらの方法を理解し、適切に実行することで、安定したSSH接続を維持することができます。本記事では、SSHセッションの切断を防止するための詳細な手順を紹介します。
1. サーバー側での設定
SSHセッションが一定の時間で切断される原因の一つに、サーバー側の設定があります。通常、セッションが一定時間アイドル状態になると、セッションが自動的に切断されるように設定されていることがあります。この動作を防ぐためには、サーバー側のSSH設定ファイルを変更する必要があります。
sshd_config ファイルの変更
-
設定ファイルの編集
サーバーにログインし、SSH設定ファイル/etc/ssh/sshd_configを開きます。エディタ(例:nanoやvim)を使って編集します。bashsudo nano /etc/ssh/sshd_config -
KeepAliveオプションの設定
sshd_configファイル内に以下の設定を追加または修正します。-
ClientAliveIntervalは、サーバーがクライアントに対して一定時間ごとに確認メッセージを送信する間隔を指定します。例えば、300秒(5分)ごとに確認を送る場合は、以下のように設定します。bashClientAliveInterval 300 -
ClientAliveCountMaxは、サーバーがクライアントからの応答を何回まで待つかを指定します。例えば、応答が3回連続でなくても接続を切断しない場合、以下のように設定します。bashClientAliveCountMax 3
この設定により、サーバーはクライアントからの応答を最大で3回まで待ち、それでも応答がない場合に接続を切断します。
-
-
設定を保存してSSHサービスを再起動
設定を変更した後、SSHサービスを再起動して変更を適用します。bashsudo systemctl restart sshd
2. クライアント側での設定
サーバー側の設定だけでなく、クライアント側でもSSHセッションが切断されないように設定することが可能です。
~/.ssh/config ファイルの編集
-
設定ファイルの作成または編集
クライアント側のSSH設定ファイル(~/.ssh/config)を編集します。このファイルが存在しない場合は、新たに作成します。bashnano ~/.ssh/config -
TCPKeepAliveとServerAliveオプションの設定
以下の設定を追加することで、クライアント側からも接続を維持するための確認メッセージを送信できます。-
TCPKeepAliveは、TCP接続が生きていることを確認するために使います。通常は有効にしておいた方が良いです。bashTCPKeepAlive yes -
ServerAliveIntervalは、クライアントが一定時間ごとにサーバーに確認メッセージを送信する間隔を指定します。例えば、60秒ごとに確認を送る場合、以下のように設定します。bashServerAliveInterval 60 -
ServerAliveCountMaxは、クライアントがサーバーから応答を受け取らない場合に接続を切断するまでの回数を指定します。例えば、3回まで待つ場合は、以下のように設定します。bashServerAliveCountMax 3
この設定により、クライアントはサーバーからの応答がない場合に接続を切断しないように設定できます。
-
-
設定の保存
設定を保存し、次回からSSH接続時に自動的に反映されるようにします。
3. セッション管理ツールの使用
SSHセッションが予期せず切断されるのを防ぐために、セッション管理ツールを使用することも効果的です。これらのツールは、セッションを維持するための追加的な手段を提供します。
tmux または screen の使用
-
tmux や screen は、セッションを分離しておき、SSH接続が切断されてもセッションを保持できるツールです。これらのツールを使用すると、接続が切断されても作業を中断せずに再接続できます。
-
tmuxのインストール(例:Ubuntuの場合)bashsudo apt install tmux -
tmuxセッションの開始bashtmux -
セッションの再接続
bashtmux attach
-
これにより、SSH接続が切断されても、セッション内で実行中のプロセスは継続されます。
4. 結論
SSHセッションが切断されないようにするためには、サーバー側とクライアント側両方で適切な設定を行うことが重要です。サーバー側での sshd_config 設定、クライアント側での ~/.ssh/config 設定、さらにセッション管理ツール(tmuxやscreen)の使用など、複数の手段を組み合わせることで、SSHセッションの切断を防ぐことができます。

