web-dev-qa-db-ja.com

FirefoxとともにSSHトンネルを開閉するにはどうすればよいですか?

接続するプロキシサーバーがあります。

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

次に、Firefoxを開きます

firefox -p "SSHProxy"

(ポート2001を使用するように構成されたFirefoxを起動します)。少しブラウズし、Firefoxを閉じてからトンネルを停止します。

私がやりたいのは、それを自動化することです。トンネルを開いてから、Firefoxを開きます。 Firefoxを閉じるとき、トンネルも閉じたいと思います。

これは簡単なスクリプトで可能ですか?

私が試してみました

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

ただし、SSHビットのみが実行され、Firefoxは開きません。順序を逆にすると、Firefoxを閉じた後にのみSSHが開きます。


以下のヘルプでは、この単純化されたスクリプトを使用しました。

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

配列を使用してPIDを保存し、それらをトラップして強制終了するbashスクリプトを作成するとどうなりますか。

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

パスワードを使用する必要がある場合は、sshpassを探してください: https://stackoverflow.com/questions/16937104/provide-password-to-ssh-command-inside-bash-script-without -the-usage-of-public

編集:

ターミナルでスクリプトを実行します。ブラウズ。閲覧が終了したら、ターミナルに戻ってCtr-C(INT/SIGINT)プロセスをクリーンアップする必要があります。それは私にとってはうまくいったようです。

1
jmunsch