如何通过 ssh 隧道自动打开 Firefox?

如何通过 ssh 隧道自动打开 Firefox?

我的大学可以访问一些我在家无法访问的学术期刊。为了能够在我离开时下载论文,我当前的流程是:

  • 创建到我的大学计算机的 ssh 隧道ssh -D 12345 [email protected]

  • 使用我配置为使用该隧道作为代理的单独配置文件启动 Firefox 的新实例:firefox -P uniprofile -no-remote。这样我仍然可以打开其他不会向我的大学发送流量的窗口。

  • 下载完论文后,我退出 Firefox 并关闭 ssh 连接。

我不明白的是如何将所有这些捆绑到一个脚本中,以便我可以创建一个桌面启动器来设置隧道(提示我输入密码),完成后启动 firefox,然后关闭 ssh当我关闭 Firefox 窗口时连接。我的第一次尝试是简单地使用 ssh 命令创建一个脚本,然后使用 firefox 命令,但最终发生的情况是,firefox 仅在我关闭 ssh 连接后才启动。

#!/bin/bash
set -e
ssh -D 12345 [email protected]
firefox -P uniprofile -no-remote
#...and at this point find a way to close the ssh connection...

答案1

这是未经测试的(因为我不使用 GUI),但试试这个:

#!/bin/bash

# From this answer http://unix.stackexchange.com/a/29949/82289
[email protected]
ssh -f -N -D 12345 -M -S /tmp/ssh_tunnel_%h.sock -o ExitOnForwardFailure=yes $SSH_HOST && \
echo "ssh tunnel started successfully" || \
echo "ssh tunnel failed to start"

# Launch firefox
firefox -P uniprofile -no-remote

# We should only get here after firefox closes
# Close the ssh tunnel socket
ssh -S /tmp/ssh_tunnel_%h.sock -O exit $SSH_HOST
# End shell-script

这 2 个标志-f-N是我认为你想要的(来自 人 ssh)。

-F

请求 ssh 在命令执行之前进入后台。如果 ssh 要求输入密码或密码短语,但用户希望它在后台运行,那么这非常有用。这意味着-n。在远程站点启动 X11 程序的推荐方法是使用 ssh -f host xterm 之类的命令。


-N

不要执行远程命令。这对于仅转发端口很有用(仅限协议版本 2)。

答案2

或者,如果您在该计算机上安装了 Firefox,则可以打开 Firefox 并将其显示在您的计算机上,如下所示:

跑步:

export DISPLAY=:0.0; 
ssh -Y [email protected]

然后,当 SSH 连接建立后,只需在该机器上运行 firefox:

firefox

相关内容