Mesmo que essa 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 acabam), você pode usar multiplexadores de terminal, como screene tmuxque mantêm a sessão ativa em segundo plano, mesmo que seu terminal seja desconectado.
Essencialmente, ao fazer login no servidor SSH, você executa imediatamente o screenque criará e anexará uma nova sessão:
$ screen
Em seguida, prossiga e faça seu trabalho com o shell como faria normalmente. Agora, se a conexão cair, quando você puder voltar a ficar online e reconectar-se ao servidor por SSH, você verá uma lista das sessões atuais:
$ screen -ls
Para reconectar a uma sessão:
$ screen -r <session>
onde <session>é o PID ou o nome da sessão. Você será reconectado à sua sessão e poderá continuar de onde parou!
Você pode até desconectar a sessão e reconectar-se de casa para pegar o ponto exato em que parou. Para desanexar a sessão que você usa, é C-aseguido por C-d( Control + Adepois e depois Control + D).
Também existe um tutorial online simples .
Usar screene tmuxem servidores remotos é considerado uma prática recomendada e é altamente recomendado . Algumas pessoas chegam ao ponto de ter screenseu shell de login padrão; portanto, quando se conectam, iniciam imediatamente uma nova screensessão.