原來一直在使用PuTTY+SSH登入Linux,如果要使用圖形介面,再加上Xming,覺得已經比較安全和方便了。唯一感覺不完美的是不能直接使用Linux案頭。最近看到關於VNC的文章,可以直接存取遠端桌面。下面是配置Windows下通過VNC訪問Linux遠端桌面的一點體會。
Linux主機:192.168.111.122,運行VNC服務和SSH服務。
Windows主機:192.168.111.189,運行VNC用戶端VNC Viewer。
1. 首先要在Linux中安裝和開啟VNC服務,VNC開啟了3個監聽連接埠。
# netstat -tlnp | grep Xvnc
tcp 0 0 0.0.0.0:5801 0.0.0.0:* LISTEN 15830/Xvnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 15830/Xvnc
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 15830/Xvnc
2. 安裝VNC Viewer後,輸入"192.168.111.122:1",再輸入口令即可登入到案頭,此時連接埠狀態為:
# netstat -tanp|grep Xvnc
tcp 0 0 0.0.0.0:5801 0.0.0.0:* LISTEN 26855/Xvnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 26855/Xvnc
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 26855/Xvnc
tcp 0 0 192.168.111.122:5901 192.168.111.189:1690 ESTABLISHED 26855/Xvnc
可見實際上串連的連接埠為5901。分別嘗試改寫成5901,5801,6001,也只有5901能建立串連。有文章也提到VNC 3.x的預設連接埠是8500,4.x預設的連接埠是5900。
其實到此為止,就可以遠程使用Linux案頭了。下面的步驟是為了提高VNC的安全性,使其通過SSH Tunnel訪問Linux案頭。
3. 和使用PuTTY+SSH訪問Linux主機一樣,在PuTTY中建立一個訪問Linux主機的串連。此時即可以與linux host的22連接埠建立SSH串連。
linux host windows host
192.168.111.122:22 <---------- SSH ----------> 192.168.111.189
在PuTTY的Connection->SSH->Tunnels中,source port填寫5901,destination填寫localhost:5901,類型為local,然後添加。在使用SSH登入登入到linux主機後,在兩台主機間產生了一個SSH Tunnel。兩台主機上5901連接埠上收發的資料都會通過SSH Tunnel傳輸,從而保證了安全性。如果希望使用SSH Tunnel,此時在VNC Viewer中填寫的伺服器位址應該寫為localhost:1(或5901)。
linux host windows host
192.168.111.122:5901 <------ SSH Tunnel -------> 192.168.111.189:5901 <--------> VNC Viewer
192.168.111.122:22 <---------- SSH ----------> 192.168.111.189
也可以使用PuTTY包中的plink建立SSH Tunnel。
plink -N -L 5901:192.168.111.122:5901 192.168.111.122
參考資料:
http://linux.chinaunix.net/bbs/viewthread.php?tid=495459
http://www.chedong.com/blog/archives/001246.html