用SSH實現X11轉移
用SSH 實現X11轉發有多種不同的方法實現連接到遠程服務器或工作站,你可以使用NoMachine 的NX 服務器或GPL 解決方案FreeNX ,其他工具類似RealVNC 或VNC 提供遠程控制軟
用SSH 實現X11轉發
有多種不同的方法實現連接到遠程服務器或工作站,你可以使用NoMachine 的NX 服務器或GPL 解決方案FreeNX ,其他工具類似RealVNC 或VNC 提供遠程控制軟件允許你查看和通過網絡與桌面應用程序進行交互。
一種加強通訊安全的方法就是使用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 user@192.168.10.5&
“User ”應該是遠程系統上的一個有效用戶,你可以(無疑地)用服務器的有效域名替換ip 地址。
,如果你現在切回到12(Ctrl-Alt-F12),在輸入正確的密碼后你會得到一個提示符:
在遠程機器OpenSUSE 上用下面的命令啟動KDE :
kde
如果你想訪問Debian 機器,你可以用下面的命令:
xterm –display :12.0 –e ssh –X user@192.168.10.6&
使用下面的命令在遠程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 終端模擬器,它主要由simontatham 編寫和維護。
如果你想用X11轉發特色,你需要給你的windows 機器準備一個X 顯示服務器,如Cygwin/X,X-win32,Exceed 或X-Deep/32,可能在你本地機器上顯示號0上安裝,如果它沒有這樣安裝,請查看X 的man 手冊,它會告訴你該怎么做。
我們將在這個實驗環境中使用X-Deep/32作為X 顯示服務器,請首先下載并安裝它,在你可以找到一個下載鏈接以及詳細的介紹和附加的幫助。
打開putty ,首先,設置連接信息,在主機名(或ip 地址)區域輸入遠程服務器的主機名或ip 地址,連接類型選擇“SSH ”,端口輸入“22”,在“連接”樹節點中,找到SSH ,展開它你將看到隧道窗口,點擊“啟動X11轉發”,
,默認設置X 顯示在“localhost:0”,現在,回到“會話”保存該連接配置信息,取一個你喜歡的名字,我們習慣用ip 地址來命名。
因為X 服務器運行在后臺,現在你應該可以運行X11應用程序,在下一張圖中你可以看到Linux 應用程序如xclock 和konqueror 運行在windows xp桌面上。