2013-04-18 35 views
0

我想在我的工作機器上運行一個應用程序(稱爲firefox)。問題是我需要做一些複雜的ssh調優才能訪問它,因爲從外部阻止對機器的訪問,並且一些端口也在內部被阻塞。所以我做了以下。如何自動化vnc + ssh解決方案

ssh -v -L 1200:serverC:22 [email protected] (locally) 
ssh -v -L 5900:127.0.0.1:5900 -p 1200 [email protected] (locally) 
x11vnc -safer -localhost -nopw -once -display :0 (on serverC) 
vinagre localhost::5900 (locally) 

我然後運行,在打開的窗口VNC火狐(說),它的所有作品。

但是我想要一個bash腳本來爲我做這個。我如何自動化它?

有兩個問題。

  1. 我需要在上面的每個ssh之後保持登錄狀態,以便調整工作,所以一個簡單的bash腳本在第一步之後就會停止。
  2. 我不知道如何讓應用程序在vnc窗口中自動運行。

理想情況下,我只需在本地輸入「./remote-firefox」(例如)以獲得所有這些事情。

回答

2

嘗試:

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

&在本地系統上,

ssh -t -L 5902:localhost:5901 [email protected]_B 'ssh -t -L 5901:localhost:5900 [email protected]_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 [email protected]_B "ssh -t -L 5901:localhost:5900 [email protected]_C 'x11vnc -safer -localhost -nopw -once -display :0'" & 
vncviewer localhost:2 

編輯: 要適應這樣的:

是的就是這樣。但令人討厭的servB - > servC的端口5900被阻塞。 - Anush

#Run both lines on local system. This may be overhead, but should work. 
ssh -t -L 5902:localhost:5901 [email protected]_B "ssh -t -L 5901:localhost:1200 [email protected]_C 'ssh localhost -L 1200:localhost:5900 & x11vnc -safer -localhost -nopw -once -display :0'" & 
vncviewer localhost:2 
+0

哪一部分我與更換? – Anush

+0

我的理解是這樣的:你有一個本地linux系統,你想查看遠程linux系統的vnc。如果是的話,這2個命令應該滿足您的要求,可以替換所有4個命令。如果您的vncviewer支持'-via'參數,它將在幕後執行隧道業務。 – anishsane

+0

Ah no。問題是我無法直接訪問遠程系統,事實上我甚至無法從中間機器訪問5900。這就是爲什麼我必須做這個複雜的調整。 – Anush