![]() |
圖1 VNC工作原理 |
VNC可以輕松實現對Linux服務器遠程管理,整個VNC運行的工作流程如下:
(1) VNC客戶端通過瀏覽器或軟件連接至VNC Server。
(2) VNC Server傳送一對話窗口至客戶端,要求輸入連接密碼,以及存取的VNC Server顯示裝置。
(3) 在客戶端輸入聯機密碼后,VNC Server驗證客戶端是否具有存取權限。
(4) 若是客戶端通過VNC Server的驗證,客戶端即要求VNC Server顯示桌面環境。
(5) VNC Server通過X-Protocol 要求X Server將畫面顯示控制權交由VNC Server負責。
(6) VNC Server將來由 X Server的桌面環境利用VNC通信協議送至客戶端,并且允許客戶端控制VNC Server的桌面環境及輸入裝置。
一、VNC服務器和客戶機連接:
這里Linux服務器、客戶機使用的是操作系統是RedHat Linux 9.0。
1、 安裝啟動VNC服務器
在Redhat Linux 9.0發行版本光盤中可以找到VNC服務器軟件。也可以在VNC的網站下載,官方網址:http://www.uk.research.att.com/archive/vnc/download.html 最新版本:3.37。 下載鏈接:http://www.realvnc.com/dist/vnc-3.3.7-1.i386.rpm
安裝命令:
#rpm –ivh vnc-server-3.3.3r2-47.i386
啟動VNC服務器
#vncserver
You will require a password to access your desktops.
Password: xxxxxxxx “第一次運行需要輸入密碼”
Verify: xxxxxxxx
New 'X' desktop is www.cao.com:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/www.cao.com:1.log
以后你想要更改VNC Server的密碼,只要執行vncpasswd命令即可。linux上的vnc server內定的桌面管理環境是twm圖像效果比較差,修改$HOME/.vnc/xstartup這個文件, 把所有內容的行前加上#,再在接尾部份加上:startkde &,使用KDE界面。
2、 在客戶機連接VNC服務器方法:
(1)使用VNC客戶端軟件:
$ vncviewer www.cao.com:1 #或者IP地址:1#
輸入連接密碼后即可連接到VNC服務器的圖形界面。
現在你可以使用鼠標和鍵盤在客戶端控制VNC服務器的桌面操作及輸入裝置。如果你需要查詢服務器上是否有你的傳真到達,可以直接用鼠標點擊“開始”-“圖形”-“傳真查看器”就想在本地主機上一樣。圖2是在Linux客戶機上進行服務器傳真查詢的截圖。
![]() |
圖2 用VNC客戶端連接遠程Linux服務器 |
圖2中外圍的大桌面是Linux客戶端界面,VNC內嵌的桌面就是遠程Linux服務器的桌面環境。這時就可以在服務器自由的上收發傳真了。
(2)使用安裝Java applet的瀏覽器連接遠程服務器
首先在Linux客戶端的瀏覽器上安裝Java插件。然后直接在瀏覽器地址欄輸入服務器端的IP:5801后輸入密碼經過驗證如圖3。輸入密碼經過驗證后會圖4界面。
![]() |
圖3輸入密碼經過驗證 |
![]() |
圖4使用瀏覽器連接遠程Linux服務器 |
在圖4中,外圍的大桌面是Linux客戶端界面,瀏覽器內嵌的桌面就是遠程Linux服務器的桌面環境。這是遠程設置Samba服務器的界面。圖5是Windows 客戶端的瀏覽器上連接VNC服務器的界面。
![]() |
圖5是Windows 客戶端的瀏覽器上連接VNC服務器的界面 |
在圖5中,外圍的大桌面是Windows客戶端界面,IE瀏覽器內嵌的桌面就是遠程Linux服務器的桌面環境。這是遠程設置NFS服務器的界面。
#p#副標題#e#
二、使用OpenSSH連接VNC
從上面的介紹我們意識到使用VNC的好處,可以方便快捷的建立遠程連接,下面要考慮安全問題。因為VNC 在因特網通道上都是不安全的。除了口令外整個遠程顯示在公共路由器上是在未經加密的情況下傳輸的。如果想要使用這些技術在全世界范圍(或者甚至跨城市)共享遠程Linux計算機,那么 VNC 應該被放置在 SSH 上。SSH 甚至(可選地)添加其自己的壓縮層來增強性能。
這里我們選擇一個VNC和OpenSSH集成工具:SSHTools。它被定義為“為Java服務的開放資源安全裝置工具包(Secure Shell toolkits)”。它將工具包和日常使用的應用程序綁在一起。SSHTerm 可以提供:基于口令的安全驗證(ssh1)和基于密匙的安全驗證(ssh2)兩種方法。SSHTerm程序就是一個典型例子,和其他的用于商業的SSH客戶端相比,SSHTerm是一個更完善的SSH客戶端。SSHTools還包括了一個VNC應用程序和一個SSH后臺程序。它包括:SSHVNC、SFTP、OpenSSH(版本3.4)幾個安全工具。主頁是:http://3sp.com/products/sshtools/sshvnc/sshvnc.php
(1)軟件安裝:
安裝軟件前需要配置Java虛擬機,然后執行命令:
#chmod +x SSHTerm-0.2.2-linux-withVM.bin
#chmod +x SSHVnc-0.1.3-linux-withVM.bin
./ SSHTerm-0.2.2-linux-withVM.bin
./ SSHVnc-0.1.3-linux-withVM.bin
安裝非常簡單,安裝程序設計的非常好可以直接在桌面建立快捷方式,其他的在只要按照安裝向導提示即可。
(2)配置步驟:
1. 首先進行VNC服務器配置,點擊主菜單“File”-“New Connection”這里需要填寫遠程Linux服務器名稱或IP地址,OpenSSH端口“22”、遠程登錄用戶名、密碼驗證方式等信息。如圖6。
![]() |
圖6配置遠程Linux VNC服務器信息 |
說明:SSHTerm支持口令(password)、公鑰(PublicKey)、公共鍵識別(Keyboard Interactive)三種認證方法。
2. 接著點擊“Protocol”選項選擇進行OpenSSH的“口令的安全驗證”或“密匙的安全驗證”的方式。
3. 然后點擊“Proxy”選項選擇代理服務器選項。SSHTerm支持“HTTP”、“SCOKS 4”、“SCOKS 5”三種代理服務器。
4. 接著點擊“Terminal”選項設置遠程終端的類型、顏色、字體等選項。
5. 最后點擊“Commands”選項在“Start users shell”,表示登陸后啟動自己的shell界面。
(3)連接遠程VNC服務器:
配置結束后點擊“Connect”按鈕進行遠程連接Linux服務器,中間要進行兩次口令的安全驗證,大約需要十秒鐘的時間。(時間由客戶機和LinuxVNC服務器距離和帶寬決定)。連接成功后就可以對Linux服務器進行直接操作了,SHHTerm內置了一個FTP工具:SFTP(使用SSH1和SSH2協議的類FTP程序)。SFTP可以在連接到大量遠程服務器上時,大大提高了靈活性。
點擊“SHHTerm”主選單-“Tools”選項-“SFTP Session”選項打開。下面是筆者向VNC服務器上傳文件:點擊“File”選單-“Upload files ”選項然后選擇上傳的文件名和上傳目標文件夾回車即可,如圖7,說明:由于使用的壓縮技術,文件傳輸速度明顯加快。
![]() |
圖7上傳文件到Linux VNC服務器 |
(4)直接使用遠程服務器桌面程序:
有時你需要直接連接遠程服務器的桌面和公司同事互相協同進行圖形操作。此時就需要使用另外一個安全工具:SSHVNC。它的連接方法和SSHTerm基本相同。需要注意是在“VNC”選項:連接服務器的方式(“LAN”、“512KB DSL”、“56KB Dial- up”),以及遠程Linux服務器顯示端口、圖像質量(1-9,建議連接距離比較遠時設定值不要太高,否則桌面操作速度會比較慢)、數據壓縮級別(1-9)、是否共享桌面等如圖8。
![]() |
圖8 配置SSHVNC連接方式 |
配置結束后點擊“Connect”按鈕進行遠程連接Linux服務器,中間要進行兩次口令的安全驗證,大約需要三十秒鐘的時間(由于要連接桌面圖標時間會長一些)。現在你可以使用鼠標和鍵盤在客戶端控制VNC服務器的桌面操作及輸入裝置。在任何一個辦公系統中OFFICE軟件都是重要的,下面可以直接使用VNC服務器的辦公程序“OpenOffice”辦公套件的“OpenOffice Calc”制作電子表格和直方圖:用鼠標點擊“開始”-“辦公”-“OpenOffice Calc”“OpenOffice Draw”然后就可以直接進行操作,如圖9。
![]() |
圖9 遠程進行圖形操作 |
圖8中大桌面是Linux客戶端界面,SSHVNC內嵌的桌面就是遠程Linux服務器的桌面環境。通過鼠標和鍵盤就可以實現遠程操作。當然現代意義遠程辦公的還包括互聯網服務、多媒體軟件操作等等。這里通過SSHVNC都輕松可以完成。SSHVNC還有Windows 版本通過它可以實現Linux 和windows 服務器的雙向安全控制,這是前面介紹的Freenx無法完成的。圖10是SSHVNC在Windows下安裝界面。
![]() |
圖10 SSHVNC在Windows下安裝界面 |
SSHVNC在Windows下配置方法和在Linux下完全相同,這里就不贅述了。圖11 是SSHVNC在Windows遠程管理Linux服務器的界面。
![]() |
圖11 SSHVNC在Windows遠程管理Linux服務器的界面 |
#p#副標題#e#
三、連接故障排除
一般可以使用如下步驟:
1、檢查本地或遠端計算機是否有開啟了防火墻,如果有,請確認是否關閉遠程連接的端口(SSHVNC軟件使用端口:22,使用瀏覽器連接的端口:5801-5900)。
2、檢查遠端計算機是否通過代理服務器共享上網,如果是,請在代理服務器上針對“遠程登陸功能”設置相應的端口映射。
3、檢查遠端計算機是否為用戶設置了密碼,如沒有,會出現“由于賬戶限制無法登陸”的提示。
4、使用瀏覽器登陸遠程Linux服務器必須安裝Java插件。在瀏覽器的菜單中選擇文件-打開文件-然后選擇你要安裝的XPI擴展插件文件。稍后就可以看到瀏覽器會詢問你是否要安裝這個插件,點擊“是”即可,這樣做是為了安全,因為默認情況下,你無法從任何網站安裝插件。另外注意新安裝的插件必須在重啟瀏覽器后才能生效(關閉所有的瀏覽器窗口,包括擴展,主題等窗口)。
5、Linux VNC服務器允許多臺計算機使用遠程連接功能,它是“多路復用的”,也就是說無論是沒有客戶桌面觀看的情況還是有多個客戶在同時觀看,都不會影響圖形應用程序的繼續運行。但是每個用戶要使用不同端口。
6、分辨率設置技巧:
通常情況使用:1024x768 以上的遠程圖形分辨率和本地 1280x1024 分辨效率頻設置配合的非常好。只留了一點額外空間以放置 VNC 標題欄和本地桌面任務欄。但是 vncviewer 窗口依然占用著幾乎整個屏幕,這很漂亮。在 100 Mbit 以太網連接的情況下,這種連接幾乎絲毫不遜于本地顯示。在 10 Mbit 以太網上,當移動和縮放窗口時,可以看到輕微的圖像延遲。所以請根據網絡帶寬情況和計算機性能合理設置分辨率。
#p#副標題#e#
四、Linux遠程訪問服務器的維護
現在許多網管員通過遠程方式來維護企業網絡的Linux遠程訪問服務器正常運行。
(一)定時自動運行VNC程序
Linux有一個稱為crond的守護程序,主要功能是周期性地檢查 /var/spool/cron目錄下的一組命令文件的內容,并在設定的時間執行這些文件中的命令。用戶可以通過crontab 命令來建立、修改、刪除這些命令文件。例如用 crontab命令實現每天VNC服務器的定時啟動:
#crontab -e
文件內容:
35 08 * * * vncserver
用vi編輯后存盤退出。使用 crontab命令添加到任務列表中:
#crontab myproject
這樣遠程Linux服務器會在每天的8點35分會自動啟動VNC服務器。
(二)遠程關閉VNC服務器和重啟
從安全考慮即使使用OpenSSH連接在不使用VNC服務器時應當關閉它。另外Linux是個多用戶的操作系統,如果有一天你要維護服務器,此時不能有用戶來登陸服務器,此時關閉VNC服務器的任務可以在遠程由系統管理員完成。
(1)使用SSHTerm殺掉VNC進程
使用SSHTerm遠程登陸VNC服務器,執行命令:
#lsof -i tcp|grep LISTEN|more #查看VNC進程號#
xinetd 2148 root 5u IPv4 2411 TCP www.cao.com:1025 (LISTEN)
X 2755 root 1u IPv4 14975 TCP *:x11 (LISTEN)
Xvnc 2972 root 0u IPv4 22319 TCP *:6002 (LISTEN)
Xvnc 2972 root 3u IPv4 22322 TCP *:5902 (LISTEN)
Xvnc 2972 root 4u IPv4 22326 TCP *:5802 (LISTEN)
然后使用命令Kill關閉VNC進程即可:
Kill -9 2972
(2)使用瀏覽器直接關閉
可以直接Linux客戶端的瀏覽器上的“SendCtrl-Alt-Del”按鈕,選擇“關機”、“注銷”或“重新啟動”等操作。
(3)VNC服務器重新啟動
以后如果再重新啟動VNC服務器直接使用Linux下的SSH命令即可。此時為了使OpenSSH支持X11通過,要修改ssh_config和sshd_config文件,因為缺省設置禁止驗證代理和X11轉發,在ssh_config添加:
X11Forwarding yes
在ssh_config中添加:
ForwardAgent yes
ForwardX11 yes
目前的遠程管理工具在安全性上已經相當可靠,因為從目前來看,如果要對這些遠程管理方式進行攻擊,所有的可能就是在傳輸中。在傳輸中,假設所有的信息都被截下來,由于解密的工作量非常大,它依然是安全的。如果使用IDA加密算法,用每秒鐘可以猜測10億密碼的分析機器,需要2的19次方/年才可以解密。
總結:
到此為止我們主要介紹了基于通過SSH、FreeNX和VNC安全管理遠程Linux服務器的方法,和傳統的ssh命令行方式相比,界面友好性有很大改進。