SSHセッションが停止するのを防ぐ方法は?

SSHセッションが停止するのを防ぐ方法は?

SSHクライアント/サーバー設定ファイルで、ServerAliveIntervalいくつかのコンピュータを540に設定しましたClientAliveInterval(それより高く設定するのは良い考えではないと思います)。現在私が使用している多くのSSHセッションは数分後に停止します。

どうすれば解決できますか?私が望むのは、セッションがまったく停止しないことです。たとえば、8時にセッションを開いて4時間使用しない場合は、12時に再利用できます。もう一度ログインする必要はありません。

答え1

変更は/etc/ssh/ssh_config正確/etc/ssh/sshd_configですが、まだ効果はありません。

構成が正しく機能するようにするには、クライアントで次の構成を変更します。

/etc/ssh/ssh_config

Host *
ServerAliveInterval 100

サーバー活動間隔 クライアントは接続を維持するために100秒ごとに空のパケットをサーバーに送信します。

空のパッケージ サーバーからクライアントに送信されます。クライアントは同じパケットをサーバーに送信します。 TCP NULL パケットには、サーバーがクライアントからの応答を要求しないため、SYN​​、ACK、FIN などの制御フラグは含まれません。 NULL パケットの説明は次のとおりです。https://www.rfc-editor.org/rfc/rfc6592

次に、サーバーで sshd 部分を構成します。

/etc/ssh/sshd_config

ClientAliveInterval 60
TCPKeepAlive yes
ClientAliveCountMax 10000

クライアントアクティビティ間隔サーバーは、接続を維持するためにクライアントに空のパケットを送信する前に60秒待ちます。

TCP接続の維持特定のファイアウォールがアイドル接続を切断しないようにすることは可能ですか?

生きているクライアントの最大数サーバーは、クライアントからメッセージを再受信できない場合でも、クライアントにアクティビティメッセージを送信します。

最終再起動ssh server

service ssh restart または、 service sshd restart使用しているシステムによって異なります。

答え2

個人的なアドバイス:screenリモートホストで使用すると、端末がアクティブである限り、接続を維持しようとします。

/etc/screenrcスクリーンセッションをすばやく識別するために一般的に追加する内容は次のとおりです。

hardstatus alwayslastline
hardstatus string "%{= kG}[ %{G}%H %{g}][ %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]"
defscrollback 8192

編集する:ヒント。

文字列hardstatusは、次のように下部のステータス行を表示します。 3つの開いたタブを持つ画面セッションの例

ロールバックバッファも通常の1000〜1500行ではなく8192行に展開されます(配布プレートによって異なります)。

答え3

ラップトップがスリープ状態になっているか、ネットワーク接続が完全でないことが問題である場合は、次のことをお勧めします。mosh実行され、ssh自動再接続が可能です。

~からウェブサイト:

モッシュ(携帯電話ケース)

ローミングを許可し、断続的な接続をサポートし、インテリジェントなローカルエコーとユーザーのキーストローク編集を提供するリモート端末アプリケーションです。

MoshはSSHを置き換えます。特にWi-Fi、携帯電話ネットワーク、長距離リンクにより、より強力で反応性に優れています。

Moshは、GNU / Linux、BSD、macOS、Solaris、Android、Chrome、iOSで利用可能な無料ソフトウェアです。

tmuxWi-Fi(または以前のバージョン)と組み合わせて使用​​すると、Wi-Fi接続を変更し、モバイルデータが失われた後でもラップトップからサーバーに接続し、数日間接続を維持できますscreenssh

答え4

/etc/sshd_configホストのsshd設定を確認してください。IdleTimeout環境

IdleTimeout time
Sets idle timeout limit to time in seconds (s or nothing afternumber), 
in minutes (m), in hours (h), in days (d), or in weeks (w).If the 
connection have been idle (all channels) for that long time thechild 
process is killed with SIGHUP, and connection is closed down.

関連情報