Mesmo que isso não seja uma resposta direta à sua pergunta, ela está altamente relacionada ao problema que você tem. Em vez de tentar manter a conexão ativa (todas as conexões eventualmente morrem), você pode usar multiplexadores de terminal, como screen
e tmux
que mantém a sessão ativa em segundo plano, mesmo que seu terminal seja desconectado.
Essencialmente, quando você faz login no servidor SSH, você executa imediatamente screen
, que criará e anexará uma nova sessão:
$ screen
Depois, vá em frente e faça seu trabalho com o shell como faria normalmente. Agora, se a conexão cair, quando você voltar a ficar on-line e reconectar-se ao servidor por SSH, você verá uma lista das sessões atuais com:
$ screen -ls
Para reconectar a uma sessão:
$ screen -r <session>
em que <session>
é o PID ou um nome de sessão. Você será reconectado à sua sessão e poderá continuar de onde parou!
Você pode até mesmo separar a sessão e reconectar-se de casa para pegar o ponto exato em que parou. Para desanexar a sessão, use C-a
seguido por C-d
(que é Control + A
e, em seguida, Control + D
).
Há tutorial online simples também.
Usar screen
e tmux
em servidores remotos é considerado uma melhor prática e é altamente recomendado . Algumas pessoas chegam a ter screen
como seu shell de login padrão, portanto, quando se conectam, iniciam imediatamente uma nova sessão screen
.