用SSH實(shí)現(xiàn)X11轉(zhuǎn)移
用SSH 實(shí)現(xiàn)X11轉(zhuǎn)發(fā)有多種不同的方法實(shí)現(xiàn)連接到遠(yuǎn)程服務(wù)器或工作站,你可以使用NoMachine 的NX 服務(wù)器或GPL 解決方案FreeNX ,其他工具類似RealVNC 或VNC 提供遠(yuǎn)程控制軟
用SSH 實(shí)現(xiàn)X11轉(zhuǎn)發(fā)
有多種不同的方法實(shí)現(xiàn)連接到遠(yuǎn)程服務(wù)器或工作站,你可以使用NoMachine 的NX 服務(wù)器或GPL 解決方案FreeNX ,其他工具類似RealVNC 或VNC 提供遠(yuǎn)程控制軟件允許你查看和通過網(wǎng)絡(luò)與桌面應(yīng)用程序進(jìn)行交互。
一種加強(qiáng)通訊安全的方法就是使用SSH 通過X11隧道或端口轉(zhuǎn)發(fā)技術(shù)實(shí)現(xiàn),開發(fā)SSH 是為了替換不安全的telnet ,ftp ,rlogin ,rsh 軟件,F(xiàn)reeNX 已經(jīng)可以完美地運(yùn)用這個(gè)技術(shù),在本文中我將展示如何使用SSH 實(shí)現(xiàn)X11轉(zhuǎn)發(fā),而不用任何附加的軟件,另外,我將解釋如何在windows xp客戶端上用PuTTY 和X-Deep/32運(yùn)行Linux 應(yīng)用程序。
為了對(duì)你有所啟發(fā),我將用一小段解釋都需要些什么,我將遠(yuǎn)程訪問兩臺(tái)機(jī)器:
運(yùn)行KDE 的OpenSUSE 10.2和運(yùn)行Gnome 的Debian 4.0 客戶端機(jī)器我使用包括ssh 客戶端的OpenSUSE 和使用Putty 的
windows xp,從ssh 的角度來看,遠(yuǎn)程機(jī)器就是服務(wù)器,本地機(jī)器就是客戶端,實(shí)驗(yàn)環(huán)境準(zhǔn)備如下圖:
第一步:準(zhǔn)備ssh 服務(wù)器
,首先,你必須在你的服務(wù)器上安裝ssh 軟件包,我將使用操作系統(tǒng)發(fā)行版提供了OpenSSH 軟件包,請(qǐng)核對(duì)在兩個(gè)發(fā)行版中如何尋找和安裝rpm 包,在某些情況下它已經(jīng)安裝在服務(wù)器上了(有可能將其作為標(biāo)準(zhǔn)軟件包在安裝系統(tǒng)時(shí)就安裝了)。
如果你是從源代碼建立的軟件,確認(rèn)編譯時(shí)選擇了X 轉(zhuǎn)發(fā)支持,ssh 3.2或更高版本的二進(jìn)制軟件包包括運(yùn)行時(shí)X 檢測(cè)。
同時(shí),確認(rèn)在你的/etc/ssh2/sshd2_config文件中有下面這一行: AllowX11Forwarding yes
準(zhǔn)備好之后,使用下面的命令啟動(dòng)sshd 服務(wù):
/etc/init.d/sshd start
service sshd start
第二步:使用一個(gè)Linux 客戶端
你或許已經(jīng)注意到Linux 通過Ctrl-Alt-F1(-F12)組合鍵在虛擬控制臺(tái)之間切換。通常,沒有理由離開默認(rèn)的控制臺(tái)(虛擬控制臺(tái)#7),除非你試圖再次登陸或問題診斷。
請(qǐng)象下面這樣為測(cè)試目的進(jìn)行控制臺(tái)切換:
Ctrl-Alt-F2 - 切換到一個(gè)新的shell 提示符
Ctrl-Alt-F12 - 切換到一個(gè)空的控制臺(tái)
Ctrl-Alt-F7 - 切回到X 圖形顯示
,當(dāng)你同時(shí)敲擊了Ctrl-Alt-F12時(shí),你會(huì)看到在這個(gè)沒有任何實(shí)質(zhì)內(nèi)容,讓我們?cè)谶@里顯示遠(yuǎn)程機(jī)器的GUI 圖形界面,我們使用組合鍵可以很容易地從你的客戶端切換到遠(yuǎn)程機(jī)器。
登陸到你的客戶端機(jī)器,作為一個(gè)常規(guī)用戶運(yùn)(不需要root 權(quán)限)行KDE 并打開一個(gè)控制臺(tái),我們將在控制臺(tái)12上使用下面的命令打開一個(gè)X 會(huì)話: X :12.0 vt12 2>&1 >/dev/null &
這將發(fā)生所有不需要的輸出或全部黑屏但是將在控制臺(tái)12上打開另外一個(gè)X 窗口,如果你現(xiàn)在用Ctrl-Alt-F12進(jìn)行切換,你將看到下面這樣的顯示(空的灰暗的背景):
使用Ctrl-Alt-F7切回到原始的圖形顯示,回到之前你已經(jīng)打開的控制臺(tái),使用下面的命令創(chuàng)建一個(gè)到遠(yuǎn)程服務(wù)的ssh 連接:
xterm –display :12.0 –e ssh –X user@192.168.10.5&
“User ”應(yīng)該是遠(yuǎn)程系統(tǒng)上的一個(gè)有效用戶,你可以(無疑地)用服務(wù)器的有效域名替換ip 地址。
,如果你現(xiàn)在切回到12(Ctrl-Alt-F12),在輸入正確的密碼后你會(huì)得到一個(gè)提示符:
在遠(yuǎn)程機(jī)器OpenSUSE 上用下面的命令啟動(dòng)KDE :
kde
如果你想訪問Debian 機(jī)器,你可以用下面的命令:
xterm –display :12.0 –e ssh –X user@192.168.10.6&
使用下面的命令在遠(yuǎn)程Debian 機(jī)器上啟動(dòng)Gnome :
gnome-session&
請(qǐng)注意兩個(gè)例子中都有一個(gè)x-term 窗口顯示登陸信息,你可以最小化它,但是不應(yīng)該關(guān)閉它。
,如果你想取消連接,只需要關(guān)閉xterm 窗口或使用Ctrl-Alt-Backspace 組合鍵。
如我前面提到的一樣,現(xiàn)在你可以在兩臺(tái)機(jī)器上工作,通過Ctrl-Alt-F7和Ctrl-Alt-F12組合鍵來切換。
第三步:使用一個(gè)windows 客戶端
不幸的是我們?cè)趙indows 上使用了附加的軟件,我們使用putty 從
windows xp客戶端到遠(yuǎn)程服務(wù)器進(jìn)行連接,putty 是一款免費(fèi)的win32和unix 平臺(tái)下可用的telnet 、ssh 實(shí)現(xiàn),附帶一個(gè)xterm 終端模擬器,它主要由simontatham 編寫和維護(hù)。
如果你想用X11轉(zhuǎn)發(fā)特色,你需要給你的windows 機(jī)器準(zhǔn)備一個(gè)X 顯示服務(wù)器,如Cygwin/X,X-win32,Exceed 或X-Deep/32,可能在你本地機(jī)器上顯示號(hào)0上安裝,如果它沒有這樣安裝,請(qǐng)查看X 的man 手冊(cè),它會(huì)告訴你該怎么做。
我們將在這個(gè)實(shí)驗(yàn)環(huán)境中使用X-Deep/32作為X 顯示服務(wù)器,請(qǐng)首先下載并安裝它,在你可以找到一個(gè)下載鏈接以及詳細(xì)的介紹和附加的幫助。
打開putty ,首先,設(shè)置連接信息,在主機(jī)名(或ip 地址)區(qū)域輸入遠(yuǎn)程服務(wù)器的主機(jī)名或ip 地址,連接類型選擇“SSH ”,端口輸入“22”,在“連接”樹節(jié)點(diǎn)中,找到SSH ,展開它你將看到隧道窗口,點(diǎn)擊“啟動(dòng)X11轉(zhuǎn)發(fā)”,
,默認(rèn)設(shè)置X 顯示在“l(fā)ocalhost:0”,現(xiàn)在,回到“會(huì)話”保存該連接配置信息,取一個(gè)你喜歡的名字,我們習(xí)慣用ip 地址來命名。
因?yàn)閄 服務(wù)器運(yùn)行在后臺(tái),現(xiàn)在你應(yīng)該可以運(yùn)行X11應(yīng)用程序,在下一張圖中你可以看到Linux 應(yīng)用程序如xclock 和konqueror 運(yùn)行在windows xp桌面上。