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 .