Como posso fechar automaticamente as conexões SSH perdidas?

3

Quando eu trabalho no meu servidor remotamente, às vezes minhas conexões SSH são descartadas devido a problemas de rede. Quando me reconecto ao meu servidor, as sessões perdidas permanecem abertas. Eu posso vê-los quando eu corro w .

Estou ciente de que posso matá-los usando seu PID, mas gostaria de matar automaticamente as sessões perdidas, se isso for possível.

Como posso conseguir isso?

    
por eden881 29.04.2016 / 20:29

2 respostas

5

Habilite uma das mensagens keepalive do SSH, por exemplo ativando TCPKeepAlive ou ClientAliveInterval na configuração do sshd do servidor.

Da mesma forma, na configuração do cliente, você pode usar TCPKeepAlive e ServerAliveInterval .

TCPKeepAlive costumava ser apenas KeepAlive , se você tiver uma versão antiga do OpenSSH.

Keepalives TCP são um recurso que faz parte do TCP e opera fora do túnel criptografado construído pelo SSH. Então, alguém poderia, por exemplo, imitá-los para fingir que a conexão ainda está aberta quando não está.

ClientAlive / ServerAlive opera dentro do túnel criptografado, então não pode ser falsificado (mas eu acredito que é uma nova opção e, claro, custa mais tempo de CPU).

    
por 29.04.2016 / 20:42
0

Eles devem ser fechados assim que o tempo limite do TCP for atingido ou as mensagens do KeepAlive não receberem nenhuma resposta da sua conexão antiga. Não há nada para se preocupar.

Se eles não o fizerem, há algum bug no openssh , que deve ser informado pelo desenvolvedor.

    
por 29.04.2016 / 23:01