如何與 Firefox 一起打開和關閉 SSH 隧道?

如何與 Firefox 一起打開和關閉 SSH 隧道?

我有一個代理伺服器,我像這樣連接

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

然後我打開火狐瀏覽器

firefox -p "SSHProxy"

(它啟動配置為使用連接埠 2001 的 Firefox)。我瀏覽了一下,然後關閉 Firefox,然後停止隧道。

我想做的是自動化它:打開隧道,然後打開 Firefox。當我關閉 Firefox 時,我也想關閉隧道。

這可以透過簡單的腳本實現嗎?

我努力了

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

但只有 SSH 位元執行,Firefox 無法開啟。如果我顛倒順序,則 SSH 僅在關閉 Firefox 後開啟。


在下面的幫助下,我使用了這個簡化的腳本:

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

答案1

建立一個 bash 腳本,使用陣列儲存 PID,然後捕獲並殺死它們怎麼樣:

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

如果您需要使用密碼,請在此處查找sshpasshttps://stackoverflow.com/questions/16937104/provide-password-to-ssh-command-inside-bash-script-without-the-usage-of-public

編輯:

在終端中運行腳本。瀏覽。瀏覽完成後,返回終端並按Ctr-C(INT/SIGINT),進程應該被清理。這似乎對我有用。

相關內容