O que provavelmente está acontecendo é que alguns equipamentos de rede em algum lugar entre o cliente e o servidor encerram conexões que ficaram inativas por um certo tempo. Esse equipamento de rede (firewalls, dispositivos NAT,…) muitas vezes mata as conexões ociosas após algum tempo para economizar memória (é uma defesa contra a negação de serviço, mas tende a ser um aborrecimento para os usuários).
Para evitar isso, você pode definir a opção ServerAliveInterval
em ~/.ssh/config
para um valor menor que o tempo limite após o qual suas conexões serão canceladas. Por exemplo, se suas conexões forem canceladas quando elas ficarem inativas por 10 minutos, defina ServerAliveInterval
a 5 minutos:
ServerAliveInterval 300
Além disso, caso você seja cortado, use um multiplexador de terminal no servidor: Screen ou tmux . Por exemplo, com Screen, execute screen -rd
no servidor quando você efetuar login; Se você for desconectado, reconecte-se ao servidor e execute screen -rd
para reconectar a sessão existente. Veja também e tela tmux vs. GNU