Como recuperar de uma sessão xdebug corrompida?

2

Às vezes, meu computador local falha quando estou no meio de uma sessão xdebug . Quando reconectar ao meu servidor remoto com um shell invertido, recebo este aviso:

Warning: remote port forwarding failed for listen port 9000?

Como posso recuperar instantaneamente da minha xdebug sessão após uma falha no meu computador local?

    
por Bytemain 26.05.2012 / 21:49

1 resposta

3

Eu não sei xdebug , mas não acho que seja relevante. É apenas um problema de encaminhamento de porta ssh. O problema é que a sessão ssh anterior no servidor ainda está em execução, o que significa que ainda usa a porta remota.

Uma solução é matar a sessão ssh anterior. Basta dar uma olhada com ps axu e kill .

A outra solução é modificar a configuração do sshd que o servidor faz regularmente ao cliente e mata a sessão se nenhuma resposta for recebida. Para fazer isso, você teria que editar /etc/ssh/sshd_config e definir ClientAliveInterval para algo, por exemplo, ClientAliveInterval 30 , o que significa que o servidor tentará alcançar o cliente após 30 segundos se nenhum dado for recebido.

Para mais alguns detalhes, copiei a parte relevante de 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.
    
por 26.05.2012 / 22:31