Sua sessão ssh está caindo com frequência? Quem passa muito tempo trabalhando com servidores, sabe que isso acontece com frequência, principalmente, quando se trabalha com um servidor, e com edição de algum código.

ssh caindo

Existem duas principais formas de se evitar a queda do ssh, através do servidor e pelo client:

Evitando timeout do SSH pelo client

A forma mais aconselhável visando o comodismo, principalmente pois dessa forma irá se aplicar para qualquer servidor. Não somente para determinado servidor, obviamente, se você preferir, não disponibilizar isso para todos os servidores, por medida de segurança, use o segundo modo.

Através desse método iremos configurar no client(a maquina que irá acessar o servidor), a diretiva ServerAliveInterval. Essa diretiva simplesmente envia uma requisição para o servidor de “tanto em tanto”, para não fechar a conexão. De acordo com o manual:

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, or 300 if the BatchMode option is set. This option
applies to protocol version 2 only. ProtocolKeepAlives and
SetupTimeOut are Debian-specific compatibility aliases for this
option.

Acesse o arquivo de configuração do ssh em /etc/ssh/ssh_config e se já houver a diretiva, diminua o tempo, pois no seu servidor a verificação desse tempo está menor do que a do seu computador. Quando você acessar encontrará algo como:

   ServerAliveInterval 30

Onde 30 é o tempo em segundos que o client irá informar ao servidor que está online.

Evitando timeout do SSH pelo server

Como me referi anteriormente, prefira o método através do client,porque?! Leia cara…! Brincadeira, leia por favor amigão!

No servidor, tão fácil quanto o outro método, basta acessar o arquivo de configuração do servidor, em /etc/ssh/sshd_config e editar a diretiva ClientAliveInterval, a explicação dela de acordo com o manual é:

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.

E da mesma forma como a outra:

   ClientAliveInterval 60

Fica a seu critério o tempo dessa diretiva, pois tambem é meio subjetivo, pois vai depender de quanto tempo você fica ausente da sessão do ssh.

Lembrando que essas configurações se aplicam apenas ao SSH com protocolo da versão 2

Para mais detalhes acessem OpenSSH

Espero que tenham gostado da dica, e que não tenha ficado confuso ou prolixo. Por favor deixem sua opinião.

Written by vinicius