一種加強通訊安全的方法就是使用SSH通過X11隧道或端口轉發技術實現,開發SSH是為了替換不安全的telnet,FTP,rlogin,rsh軟件,FreeNX已經可以完美地運用這個技術,在本文中我將展示如何使用SSH實現X11轉發,而不用任何附加的軟件,另外,我將解釋如何在Windows xp客戶端上用PuTTY和X-Deep/32運行Linux應用程序。
為了對你有所啟發,我將用一小段解釋都需要些什麼,我將遠程訪問兩台機器:
運行KDE的OpenSUSE 10.2和運行Gnome的Debian 4.0
客戶端機器我使用包括ssh客戶端的OpenSUSE和使用Putty的Windows xp,從ssh的角度來看,遠程機器就是服務器,本地機器就是客戶端,實驗環境准備如下圖:
第一步:准備ssh服務器
首先,你必須在你的服務器上安裝ssh軟件包,我將使用操作系統發行版提供了OpenSSH軟件包,請核對在兩個發行版中如何尋找和安裝rpm包,在某些情況下它已經安裝在服務器上了(有可能將其作為標准軟件包在安裝系統時就安裝了)。
如果你是從源代碼建立的軟件,確認編譯時選擇了X轉發支持,ssh 3.2或更高版本的二進制軟件包包括運行時X檢測。
同時,確認在你的/etc/ssh2/sshd2_config文件中有下面這一行:
AllowX11Forwarding yes
准備好之後,使用下面的命令啟動sshd服務:
/etc/init.d/sshd start
service sshd start
第二步:使用一個Linux客戶端
你或許已經注意到Linux通過Ctrl-Alt-F1(-F12)組合鍵在虛擬控制台之間切換。通常,沒有理由離開默認的控制台(虛擬控制台#7),除非你試圖再次登陸或問題診斷。
請象下面這樣為測試目的進行控制台切換:
Ctrl-Alt-F2 - 切換到一個新的shell提示符
Ctrl-Alt-F12 - 切換到一個空的控制台
Ctrl-Alt-F7 - 切回到X圖形顯示
當你同時敲擊了Ctrl-Alt-F12時,你會看到在這個控制台沒有任何實質內容,讓我們在這裡顯示遠程機器的GUI圖形界面,我們使用組合鍵可以很容易地從你的客戶端切換到遠程機器。
登陸到你的客戶端機器,作為一個常規用戶運(不需要root權限)行KDE並打開一個控制台,我們將在控制台12上使用下面的命令打開一個X會話:
X :12.0 vt12 2>&1 >/dev/null &
這將發生所有不需要的輸出或全部黑屏但是將在控制台12上打開另外一個X窗口,如果你現在用Ctrl-Alt-F12進行切換,你將看到下面這樣的顯示(空的灰暗的背景):
使用Ctrl-Alt-F7切回到原始的圖形顯示,回到之前你已經打開的控制台,使用下面的命令創建一個到遠程服務的ssh連接:
xterm –display :12.0 –e ssh –X [email protected]&
“User”應該是遠程系統上的一個有效用戶,你可以(無疑地)用服務器的有效域名替換ip地址。
如果你現在切回到控制台12(Ctrl-Alt-F12),在輸入正確的密碼後你會得到一個提示符:
在遠程機器OpenSUSE上用下面的命令啟動KDE:
kde
如果你想訪問Debian機器,你可以用下面的命令:
xterm –display :12.0 –e ssh –X [email protected]&
使用下面的命令在遠程Debian機器上啟動Gnome:
gnome-session &
請注意兩個例子中都有一個x-term窗口顯示登陸信息,你可以最小化它,但是不應該關閉它。
如果你想取消連接,只需要關閉xterm窗口或使用Ctrl-Alt-Backspace組合鍵。
如我前面提到的一樣,現在你可以在兩台機器上工作,通過Ctrl-Alt-F7和Ctrl-Alt-F12組合鍵來切換。
第三步:使用一個Windows客戶端
不幸的是我們在windows上使用了附加的軟件,我們使用putty從Windows xp客戶端到遠程服務器進行連接,putty是一款免費的win32和unix平台下可用的telnet、ssh實現,附帶一個xterm終端模擬器,它主要由simon tatham編寫和維護。
如果你想用X11轉發特色,你需要給你的Windows機器准備一個X顯示服務器,如Cygwin/X,X-win32,Exceed或X-Deep/32,可能在你本地機器上顯示號0上安裝,如果它沒有這樣安裝,請查看X服務器的man手冊,它會告訴你該怎麼做。
我們將在這個實驗環境中使用X-Deep/32作為X顯示服務器,請首先下載並安裝它,在http://www.caslab.queensu.ca/LabHelp/XServer/你可以找到一個下載鏈接以及詳細的介紹和附加的幫助。
打開putty,首先,設置連接信息,在主機名(或ip地址)區域輸入遠程服務器的主機名或ip地址,連接類型選擇“SSH”,端口輸入“22”,在“連接”樹節點中,找到SSH,展開它你將看到隧道窗口,點擊“啟動X11轉發”,默認設置X顯示在“localhost:0”,現在,回到“會話”保存該連接配置信息,取一個你喜歡的名字,我們習慣用ip地址來命名。
因為X服務器運行在後台,現在你應該可以運行X11應用程序,在下一張圖中你可以看到Linux應用程序如xclock和konqueror運行在Windows xp桌面上。