如何使用 Firefox 打开和关闭 SSH 隧道?

如何使用 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

答案1

那么创建一个使用数组来存储 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

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

编辑:

在终端中运行脚本。浏览。浏览完成后,返回终端并按Ctr-C(INT/SIGINT),进程应该会被清理。这对我来说似乎有效。

相关内容