Developer's Lab

By Diogo Pinto - DiØ

Prevent SSH Connection Time Out

Conexões estabelecidas de clientes SSHs, são automaticamente desconectadas do servidor SSH quando um tempo limite de conexão é alcançado, como mostrado pela mensagem abaixo:

Read from remote host foo.com: Connection reset by peer Connection to foo.com closed.

Para evitar que o cliente perca conexão com o servidor SSH, por timeout, uma das soluções abaixo são avaliadas:

Configuração no servidor

1
2
3
TCPKeepAlive no
ClientAliveInterval 30
ClientAliveCountMax 100

TPCKeepAlive ( KeepAlive ), verifica se deve ou não, realizar a verificação se o Socket via cliente e servidor, ainda encontra-se aberto. Um pacote cru, é enviado e se for recebido, significa que a conexão ainda ativa. A opção padrão para a maioria dos caso, é “YES”.

ClientAliveInterval Numero do intervalo em segundos em que o servidor, irá enviar um pacote nulo, conforme descrito anteriormente, ao cliente. O padrão para a maioria dos casos, é zero.

ClientAliveCountMax 100 Número máximo de vezes, que será enviado o pacote antes de desconectar do cliente. O padrão para a maioria dos casos, são três.

Reiniciando o servidor para aplicar as configurações modificadas:

1
$ sudo service sshd restart

Configuração no Cliente

Se acaso, não for possível realizar os procedimentos anteriores no servidor, devido a permissão, no lado do cliente, é possível realizar o seguinte procedimento:

Se para todos os usuários do sistema, adicionar aqui

/etc/ssh/ssh_config

Ou para um usuário específico, adicionar aqui

~/.ssh/config

A seguinte configuração:

ServerAliveInterval 30

Configuração no cliente – linha de comando E por fim, a outra opção, seria a manual, via linha de comando, através da opção (-o)

1
$ ssh -o ServerAliveInterval=30 user@foo.com

Comments