セッション中にローカルコンピュータがクラッシュすることがありますxdebug
。リバースシェルを使用してリモートサーバーに再接続すると、次の警告が表示されます。
Warning: remote port forwarding failed for listen port 9000?
xdebug
ローカルマシンがクラッシュした直後にセッションを回復する方法は?
答え1
よくわかりませんが、xdebug
関連性がないと思います。これは SSH ポート転送の問題です。問題は、サーバーの以前のSSHセッションがまだ実行中であることです。これは、まだリモートポートを使用していることを意味します。
1つの解決策は、以前のSSHセッションを終了することです。ps axu
これを見てくださいkill
。
別の回避策は、サーバーが定期的にクライアントにpingを送信し、応答が受信されない場合にセッションを終了するようにsshd構成を変更することです。これを行うには、何かを編集して設定する必要が/etc/ssh/sshd_config
ありますClientAliveInterval
。たとえば、ClientAliveInterval 30
データが受信されないと、サーバーは30秒後にクライアントに接続しようとします。
詳細は関連部分をコピーしました。man sshd_config
ClientAliveCountMax
Sets the number of client alive messages (see below) which may be sent
without sshd(8) receiving any messages back from the client. If this
threshold is reached while client alive messages are being sent, sshd
will disconnect the client, terminating the session. It is important
to note that the use of client alive messages is very different from
TCPKeepAlive (below). The client alive messages are sent through the
encrypted channel and therefore will not be spoofable. The TCP
keepalive option enabled by TCPKeepAlive is spoofable. The client
alive mechanism is valuable when the client or server depend on
knowing when a connection has become inactive.
The default value is 3. If ClientAliveInterval (see below) is set to
15, and ClientAliveCountMax is left at the default, unresponsive SSH
clients will be disconnected after approximately 45 seconds.
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.