GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo mantener abierto un túnel SSH de manera confiable?

Parece que necesitas autossh. Esto monitoreará un túnel ssh y lo reiniciará según sea necesario. Lo hemos usado durante un par de años y parece funcionar bien.

autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C

Más detalles sobre el parámetro -M aquí


Todos los cortafuegos con estado se olvidan de una conexión después de no ver un paquete para esa conexión durante un tiempo (para evitar que las tablas de estado se llenen de conexiones donde ambos extremos murieron sin cerrar la conexión). La mayoría de las implementaciones de TCP enviarán un paquete de actividad después de mucho tiempo sin recibir noticias del otro lado (2 horas es un valor común). Sin embargo, si hay un firewall con estado que se olvida de la conexión antes de que se puedan enviar los paquetes keepalive, una conexión de larga duración pero inactiva morirá.

Si ese es el caso, la solución es evitar que la conexión quede inactiva. OpenSSH tiene una opción llamada ServerAliveInterval que se puede usar para evitar que la conexión esté inactiva durante demasiado tiempo (como beneficio adicional, detectará cuándo el compañero murió antes, incluso si la conexión está inactiva).


He usado el siguiente script Bash para seguir generando nuevos túneles ssh cuando el anterior muere. El uso de un script es útil cuando no quiere o no puede instalar paquetes adicionales o usar el compilador.

while true
do
  ssh <ssh_options> [[email protected]]hostname
  sleep 15
done

Tenga en cuenta que esto requiere un archivo de claves para establecer la conexión automáticamente, pero ese también es el caso con autossh.


Linux
  1. Cómo aumentar el tiempo de espera de la conexión SSH

  2. Cómo comprobar la velocidad de su conexión ssh

  3. ¿Cómo terminar la conexión SSH que no responde en Linux?

  4. Cómo mantener vivas las sesiones SSH

  5. Cómo configurar el túnel SSH inverso en Linux

Ssh:¿cómo funciona el túnel Ssh inverso?

¿Cómo configurar fuentes en una conexión X remota (xdmcp Vs. Ssh)?

Cómo mantener las sesiones SSH remotas en ejecución después de la desconexión

¿Cómo puedo canalizar todo el tráfico de mi red a través de SSH?

¿Cómo salgo de una conexión SSH?

Cómo evitar que SSH se desconecte si ha estado inactivo por un tiempo