Abro un túnel SSH mediante programación, con:
sshpass -p "my_password" ssh -fN -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes remote_user@remote_server.tld -L 13306:127.0.0.1:3306 sleep 3
y funciona como se esperaba, pero no se cierra después de 3 segundos de inactividad.
Tomo el PID SSH y lo mato explícitamente cuando finaliza la conexión; pero prefiero la sleep
versión que puede cerrar el túnel automáticamente.
¿ El uso sshpass
mantiene el túnel abierto o estoy haciendo algo mal?
Respuesta1
Tu estas usando
-f
Solicita que ssh pase a segundo plano justo antes de la ejecución del comando. Esto es útil si ssh va a solicitar contraseñas o frases de contraseña, pero el usuario las 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.
y
-N
No ejecute un comando remoto. Esto es útil sólo para reenviar puertos.
Que pasa a segundo plano antes de ejecutar un comando (que se suprime). Por tanto queda en un segundo plano. Nunca se sleep
ejecuta y espera a que lo eliminen.