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