¿Cómo puedo abrir y cerrar un túnel SSH junto con Firefox?

¿Cómo puedo abrir y cerrar un túnel SSH junto con Firefox?

Tengo un servidor proxy al que me conecto así

ssh -L 2001:localhost:8888 -N myserver.com -p 443  

Luego abro Firefox

firefox -p "SSHProxy"

(Inicia Firefox configurado para usar el puerto 2001). Navego un poco, luego cierro Firefox y luego paro el túnel.

Lo que me gustaría hacer es automatizarlo: abrir el túnel, luego abrir Firefox. Cuando cierro Firefox, también me gustaría cerrar el túnel.

¿Es esto posible en un guión simple?

Yo he tratado

ssh -L 2001:localhost:8888 -N myserver.com -p 443 && firefox -p "SSHProxy"

pero solo se ejecuta el bit SSH, Firefox no se abre. Si invierto el orden, SSH solo se abre después de cerrar Firefox.


Con la ayuda a continuación, he utilizado este script simplificado:

#!/bin/bash -e

#Start SSH
ssh -L 2001:localhost:8888 -Nf myserver.com -p 443 &

#Start Firefox
firefox -p "SSHProxy" &

#Kill the SSH port 2001 when Firefox stops
trap "ps aux | grep ssh | grep 2001 | awk '{print \$2}' | xargs kill" EXIT SIGINT SIGTERM

wait

Respuesta1

¿Qué tal crear un script bash que use matrices para almacenar el PID y luego atraparlos y eliminarlos?

#!/bin/bash -e

ssh -L 2001:localhost:8888 -N myserver.com -p 443 &
PID[0]=$!
firefox -p "SSHProxy" &
PID[1]=$!
trap "kill ${PID[*]}" INT SIGINT        
wait

Si necesita utilizar una contraseña, busque aquí sshpass:https://stackoverflow.com/questions/16937104/provide-password-to-ssh-command-inside-bash-script- without-the-usage-of-public

EDITAR:

Ejecute el script en la terminal. Navegar. Cuando termine de navegar, regrese a la terminal y presione Ctr-C(INT/SIGINT). Los procesos deben limpiarse. Parecía funcionar para mí.

información relacionada