web-dev-qa-db-fra.com

Comment puis-je ouvrir et fermer un tunnel SSH avec Firefox?

J'ai un serveur proxy auquel je me connecte pour aimer

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

J'ouvre alors Firefox

firefox -p "SSHProxy"

(Il démarre Firefox configuré pour utiliser le port 2001). Je navigue un peu, puis ferme Firefox et puis arrête le tunnel.

Ce que je voudrais faire, c'est l'automatiser: ouvrez le tunnel, puis ouvrez Firefox. Lorsque je ferme Firefox, j'aimerais aussi fermer le tunnel.

Est-ce possible dans un script simple?

J'ai essayé

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

mais seul le bit SSH s'exécute, Firefox ne s'ouvre pas. Si j'inverse l'ordre, SSH ne s'ouvre que lorsque je ferme Firefox.


Avec l'aide ci-dessous, j'ai utilisé ce script simplifié:

#!/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
2
Mendhak

Pourquoi ne pas créer un script bash qui utilise des tableaux pour stocker le PID, puis les intercepter et les tuer:

#!/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 vous devez utiliser un mot de passe, cherchez ici sshpass: https://stackoverflow.com/questions/16937104/provide-password-to-ssh-command-inside-bash-script-without- the-usage-of-public

EDIT:

Exécutez le script en terminal. Feuilleter. Une fois la navigation terminée, retournez au terminal et appuyez sur Ctr-C (INT/SIGINT). Les processus doivent être nettoyés. Cela semblait fonctionner pour moi.

1
jmunsch