Aunque esto no sea una respuesta directa a su pregunta, está muy relacionada con el problema que tiene. En lugar de tratar de mantener viva la conexión (todas las conexiones eventualmente mueren) puede usar multiplexores de terminal, como screeny tmuxque mantienen la sesión viva en segundo plano, incluso si su terminal se desconecta.
Esencialmente, cuando inicia sesión en el servidor SSH, ejecuta inmediatamente screenlo que creará y adjuntará una nueva sesión:
$ screen
Luego continúas y haces tu trabajo con el shell como lo harías normalmente. Ahora, si se corta la conexión, cuando pueda volver a conectarse y volver a conectarse al servidor a través de SSH, obtendrá una lista de las sesiones actuales con:
$ screen -ls
Para volver a adjuntar a una sesión:
$ screen -r <session>
donde <session>está el PID o el nombre de una sesión. ¡Volverá a conectarse a su sesión y podrá continuar desde donde lo dejó!
Incluso puedes separar la sesión y volver a conectarte desde casa para continuar desde el punto exacto donde lo dejaste. Para separar la sesión que usa C-aseguido de C-d(eso Control + Ay luego Control + D).
También hay un sencillo tutorial en línea .
Usar screeny tmuxen servidores remotos se considera una práctica recomendada y es muy recomendable . Algunas personas llegan a tener screensu shell de inicio de sesión predeterminado, por lo que cuando se conectan, comienzan inmediatamente una nueva screensesión.