세션 도중에 로컬 컴퓨터가 충돌할 때가 있습니다 xdebug
. 리버스 셸을 사용하여 원격 서버에 다시 연결하면 다음 경고가 표시됩니다.
Warning: remote port forwarding failed for listen port 9000?
xdebug
로컬 머신 충돌 후 즉시 세션을 복구하는 방법은 무엇입니까?
답변1
잘 모르겠지만 xdebug
관련성이 없다고 생각합니다. 이것은 단지 SSH 포트 전달 문제입니다. 문제는 서버의 이전 SSH 세션이 여전히 실행 중이라는 것입니다. 이는 여전히 원격 포트를 사용하고 있음을 의미합니다.
한 가지 해결책은 이전 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.