Tengo una conexión de red poco confiable entre dos máquinas: a veces las conexiones TCP activas se cortan por razones que escapan a mi control. Quiero establecer una conexión TCP confiable entre las dos máquinas.
Si la red fuera confiable, simplemente me ejecutaría ssh -L 1234:localhost:1234 remotehost
, con el servidor escuchando en el puerto 1234 remotehost
, y señalaría al cliente localhost:1234
. Pero si la conexión ssh muere, también lo hará la conexión reenviada. ¿Cómo puedo organizar la restauración automática de la conexión entre el cliente y el servidor?
No soluciones:
- Esto no es para aplicaciones interactivas, por lo que la pantalla no se aplica.
- Esto no se trata solo de volver a conectar un túnel SSH automáticamente, la autossh . Quiero continuar usando la misma conexión TCP tunelizada, no iniciar una nueva.
- En principio, una VPN haría el truco. Pero parece excesivo cuando solo quiero una conexión TCP, y me gustaría una solución que funcione incluso si no tengo permisos de root en ninguno de los lados.
Tengo un vago recuerdo de un programa llamado rocks
que hizo exactamente eso, pero parece haberse caído de la web. Estoy principalmente interesado en Linux en ambos lados (aunque esperaría que un programa en este nivel sea portátil para otros dispositivos), pero si conoce un programa que funcione entre QNX y VMS, mucho mejor.
scp
. Estaba respondiendo w / ssh keepalives basado en su ejemplo de reenvío de puertos. Re: escamoso salto aguas abajo, no hay mucho que puedas hacer, aparte de crear una sesión ssh con keepalives que sean más tolerantes (es decir, permitir más keepalives caídos con ServerAliveInterval > 0
y ServerAliveCountMax > 3
). NAT requiere intervalos de keepalives más bajos. La cuestión clave es identificar cuál es el problema y adaptarlo en consecuencia. Ponga las opciones .ssh/config
para que siempre estén ahí para usted
rocks
implementación ... aunque esto es obviamente un verdadero error