Ejecutar el túnel ssh en un bucle; ¿mala idea? ¿El puerto ya está en uso?

Ejecutar el túnel ssh en un bucle; ¿mala idea? ¿El puerto ya está en uso?

Configuré un túnel ssh desde un servidor que está ubicado físicamente donde trabajo (ejecuta CentOS) hasta mi casa (Ubuntu) para poder iniciar sesión en mi túnel de trabajo desde casa, usando un comando como este en la computadora del trabajo:

ssh -R 49666:localhost:22 homename@homeIP -N

Hice las claves, etc. Fui del trabajo a casa y luego, mientras estaba de forma remota en la computadora de mi casa, volví al trabajo para probarlo. Parecía bien, funcionó. Podría escanear archivos en ambos sentidos, etc.

Cuando volví a casa más tarde descubrí que el túnel se había cerrado por alguna razón. No pude entender por qué. Más tarde le pregunté a un compañero de trabajo al respecto y me dijo que tenía el mismo problema y que usa un script como este que se ejecuta constantemente en la computadora de su trabajo:

while true
 ssh -R 49666:localhost:22 homename@homeIP -N
 sleep 15

Básicamente, tiene esto funcionando a perpetuidad, para reiniciar un túnel roto automáticamente cuando se rompe.

También probé esto, hice las pruebas (cambié del trabajo a casa mientras estaba físicamente en el trabajo de forma remota usando la computadora de mi casa) y parecía estar bien nuevamente. Pero nuevamente, cuando regresé a casa, el túnel no funcionó. Revisé auth.log y encontré estas tres líneas en la misma marca de tiempo, que sería aproximadamente cuando estaba a medio camino de casa:

Accepted publickey from work IP (I erased the rest for my privacy)
error: bind: Address already in use
error: channel_setup_fwd_listener_tcpip: cannot listen to port: 49666

Parece que intentó vincular mi túnel al puerto 49666 mientras algo más lo estaba usando. Bien, entiendo por qué eso fallaría. Entonces traté de encontrar qué está usando el puerto 49666 para poder eliminarlo. Pero nada parece ser así. Probé netstat, lsof, etc. Nada usa el puerto 49666. No creo que nada use NUNCA el puerto 49666 excepto el túnel. ¿Será que hizo el túnel cuando el túnel ya existía? O si el túnel ya existiera, ¿el script de bucle de túnel simplemente no haría nada?

Dado que nada utiliza el puerto 49666, esperaría que el túnel se restableciera automáticamente cuando el script del túnel en mi computadora de trabajo vuelva a realizar el ciclo, pero no parece que así sea.

¿Hay alguna manera de resolver esto sin tener que volver físicamente al servidor en el trabajo? ¿O al menos resolverlo con un solo ajuste para no tener que volver regularmente?

El servidor nunca se apaga, por lo que, en teoría, el script en bucle debería seguir funcionando. ¿Pero tal vez terminaría solo después de no poder construir el túnel?

información relacionada