場合によっては、SSHセッションがWrite failed: Broken pipe
メッセージと共に接続を失うことがあります。どういう意味ですか?セッションを開いたままにするにはどうすればよいですか?
わかりましたscreen
。しかし、それは私が望む答えではありません。私はこれがsshd
設定オプションだと思います。
答え1
サーバーが長時間アイドル状態であった接続を閉じることができます。クライアント(ServerAliveInterval
)またはサーバー(ClientAliveInterval
)を更新できます。
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. This option applies to protocol version 2 only.
ClientAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the client, sshd(8) will send a message
through the encrypted channel to request a response from the
client. The default is 0, indicating that these messages will
not be sent to the client. This option applies to protocol
version 2 only.
サーバーを更新して再起動してくださいsshd
。
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
またはクライアント:
echo "ServerAliveInterval 60" >> ~/.ssh/config
答え2
より長い接続時間が必要な場合は、クライアント側に以下を追加してください。
echo 'ServerAliveInterval 30' | tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | tee -a ~/.ssh/config
ServerAliveCountMax
デフォルトでは、この値は3に設定されています。したがって、ServerAliveInterval
3つの情報パケットがサーバーに送信されると、自動的にログアウトされます。 1200に設定すると、このプロセスは少なくとも1200回発生する必要があることを意味します。つまり、少なくとも30×1200秒(10時間)接続されている必要があります。
答え3
別の解決策は、次のものを使用することです。mosh
- 携帯電話ケース。 SSHと比較してUDP経由で接続し、ローミングをサポートします。自宅でセッションを開始し、ラップトップを一時停止し、インターネットが接続されている職場/友達/どこでも持ち帰ることができます。ノートブックの一時停止を解除し、何も起こらなかったかのように作業を続けることができます。インターネット接続が悪い場合に特に便利です。キーストロークがサーバーに届かない場合は、すぐにフィードバックを表示し、継続的に接続をリセットしようとします。
インストールと設定は簡単です。これはすべての最新のLinux(および一部の非Linuxディストリビューション)に含まれており、以前のSSH接続を介してセッションの初期化と認証を調整します。したがって、via経由で接続でき、両端にmoshパッケージがインストールされている場合は、ssh user@server
呼び出しだけでmoshに接続できる可能性が高くなります。mosh user@server
接続障害の主な原因は、moshが正しく機能するためにUDPポート(デフォルト範囲:60000-61000)を介してサーバーにアクセスする必要があるためです。したがって、サーバーがファイアウォールの背後にある場合は、直接穴を開けることができない場合は運がないでしょう(セキュリティへの影響)。
答え4
これは通常、ネットワーク(TCP)接続がリセットされたことを意味します。たとえば、あなたのインターネットプロバイダがあなたを再接続した、またはそれに似ています。