如何自动化vnc + ssh解决方案

时间:2013-04-18 08:13:28

标签: linux bash ssh vnc

我想在我的工作机器上运行一个应用程序(称之为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窗口中自动运行。
  3. 理想情况下,我只需输入" ./ remote-firefox" (例如)在本地实现所有这一切。

1 个答案:

答案 0 :(得分: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 - &gt; 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