0

我想在我的工作机器上运行一个应用程序(称之为 firefox)。问题是我需要做一些复杂的 ssh 调谐来访问它,因为从外部阻止了对机器的访问,并且一些端口也在内部被阻止。所以我做了以下。

ssh -v -L 1200:serverC:22 user@serverB (locally)
ssh -v -L 5900:127.0.0.1:5900 -p 1200 user_from_serverC@127.0.0.1 (locally)
x11vnc -safer -localhost -nopw -once -display :0 (on serverC)
vinagre localhost::5900 (locally)

然后我在打开的 vnc 窗口中运行 firefox(比如说),一切正常。

但是我想要一个 bash 脚本来为我做这件事。我怎样才能自动化它?

有两个问题。

  1. 我需要在上面的每个 ssh 之后保持登录,以便调谐工作,所以一个简单的 bash 脚本在第一步之后就停止了。
  2. 我不知道如何让应用程序在 vnc 窗口中自动运行。

理想情况下,我只需在本地键入“./remote-firefox”(例如)即可让这一切发生。

4

1 回答 1

2

尝试:

x11vnc -safer -localhost -nopw -once -display :0 #Run manually on system_C

& 在本地系统上,

ssh -t -L 5902:localhost:5901 user_B@server_B 'ssh -t -L 5901:localhost:5900 user_C@server_C' &
#Note: Enable password-less (key based) authentication from "your_pc -> servB" & "servB -> servC"

vncviewer localhost:2 #Run on local system

注意:如果命令失败,请尝试更改端口号。在此示例中,我尝试将其隧道化,如下所示:

your_PC:5902 <-> server_B:5901 <-> server_C:5900

我还没有测试过这个 2 级链(我不知道 x11vnc 的-display参数是否适用于 ssh,但我认为它应该。):

#Run both lines on local system
ssh -t -L 5902:localhost:5901 user_B@server_B "ssh -t -L 5901:localhost:5900 user_C@server_C 'x11vnc -safer -localhost -nopw -once -display :0'" &
vncviewer localhost:2

编辑: 为了适应这个:

对,就是那样。但烦人的 servB -> servC 已阻塞端口 5900。– 阿努什

#Run both lines on local system. This may be overhead, but should work.
ssh -t -L 5902:localhost:5901 user_B@server_B "ssh -t -L 5901:localhost:1200 user_C@server_C 'ssh localhost -L 1200:localhost:5900 & x11vnc -safer -localhost -nopw -once -display :0'" &
vncviewer localhost:2
于 2013-04-18T09:18:01.723 回答