Aunque esto no es una respuesta directa a tu pregunta, está muy relacionado con el problema que tienes. En lugar de tratar de mantener la conexión viva (todas las conexiones eventualmente mueren) puedes usar multiplexores de terminal, como screen
y tmux
que mantienen la sesión viva en el fondo incluso si tu terminal se desconecta.
Esencialmente, cuando te conectas al servidor SSH, ejecutas inmediatamente screen
que creará y adjuntará una nueva sesión:
$ screen
Luego sigues adelante y haces tu trabajo con la shell como lo harías normalmente. Ahora, si la conexión se cae, cuando puedas volver a conectarte al servidor a través de SSH, obtendrás una lista de las sesiones actuales con:
$ screen -ls
Para volver a conectarse a una sesión:
$ screen -r <session>
donde <session>
es el PID o un nombre de sesión. Se reconectará a su sesión y podrá continuar desde donde lo dejó.
Incluso puede separar la sesión y volver a conectarse desde casa para continuar desde el punto exacto en el que la dejó. Para desconectar la sesión se utiliza C-a
seguido de C-d
(es decir, Control + A
y luego Control + D
).
También hay un sencillo tutorial en línea .
Usar screen
y tmux
en servidores remotos se considera una mejor práctica y es altamente recomendable. Algunas personas llegan a tener screen
como su shell de inicio de sesión por defecto, de modo que cuando se conectan inician inmediatamente una nueva sesión de screen
.