Túnel SSH en segundo plano

17

Tengo un proceso que espera que una conexión de túnel ssh se ejecute correctamente y he estado usando el siguiente comando:

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -N &

Lo ejecuté con éxito durante 8 meses, recientemente nuestro proveedor de alojamiento tuvo que hacer cambios de hardware para actualizar nuestra máquina, y actualicé nuestra máquina con un nuevo núcleo para Ubuntu. Pasó de 4.8.3-x86_64-linode76 a 4.8.6-x86_64-linode78.

Después de un montón de problemas, hemos tenido que actualizar el comando a esto:

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -fN

Al investigar la documentación de ssh, el parámetro -f

Solicita a ssh que vaya al fondo justo antes de la ejecución del comando. Esto es útil si ssh va a pedir contraseñas o frases de contraseña, pero el usuario lo quiere en segundo plano. Esto implica -n. La forma recomendada de iniciar programas X11 en un sitio remoto es con algo como ssh -f host xterm.

Al investigar el comando bash para "&"

Coloque un proceso en segundo plano (consulte Multitarea en "Uso intermedio de> El sistema operativo UNIX").

¿Hay fundamentalmente alguna diferencia en estos 2 comandos?

development4fun2011
fuente

Respuestas:

22

Sí hay. ssh &se ejecuta sshen segundo plano desde el principio. ssh -fcomienza sshen primer plano, lo que le permite solicitar contraseñas, etc., y solo después se sshpone en segundo plano justo antes de ejecutar el comando solicitado.

AlexP
fuente
¿Tiene alguna idea de por qué con el nuevo servidor me vería obligado a usar el ssh -f en lugar del ssh &. Además de eso, parece que ssh -f es un mejor enfoque, ¿estaría de acuerdo con eso?
development4fun2011
¿Quizás el nuevo sistema tiene un cliente ssh más nuevo (o simplemente diferente)?
AlexP