VNC簡介: 雖然VNC 還有著在Linux下無法按熱鍵呼出中文輸入等等小小不足,但仍然無法阻止其在Linux系統中的地位。讓我們看下它的魅力吧,首先,複製粘貼做的很隨意。本機複製了,直接在遠程機器裡按粘貼即可。很方便的。 網路遙控技術是指由一部電腦(主控端)去控制另一部電腦(被控端),而且當主控端在控制端時,就如同使用者親自坐在被控端前操作一樣,可以執行被控端的應用程式,及使用被控端的系統資源。 VNC(Virtual Network Computing)是一套由AT&T實驗室所開發的可操控遠端電腦的軟體,其採用了GPL授權條款,任何人都可免費取得該軟體。VNC軟體主要由兩個部分組成:VNC server及VNC viewer。使用者需先將VNC server安裝在被控端的電腦上後,才能在主控端執行VNC viewer控制被控端。 (在windows中也由一套著名的網路遙控軟體――Symantec公司推出的pcAnywhere。 VNC server與VNC viewer支援多種作業系統,如Unix系列(Unix,Linux,Solaris等),windows及MacOS,因此可將VNC server 及VNC viewer分別安裝在不同的作業系統中進行控制。如果目前操作的主控端電腦沒有安裝VNC viewer,也可以通過一般的網頁瀏覽器來控制被控端。 整個VNC啟動並執行工作流程如下: (1) VNC用戶端通過瀏覽器或VNC Viewer串連至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的安裝與使用 本人的作業環境:被控端 Redhat9.0,主控端Windows XP。 1.下載VNC Server與VNC viewer. VNC Server:http://www.Linuxeden.com/download/softdetail.php?softid=744 VNC viewer:http://download.pchome.net/php/dl.php?sid=2603 2.安裝. rpm –Uvh VNC-3.3.6-2.i386.rpm (如果是原始碼請看包裡的說明) 當下載了VNC的Linux版本後,可以解壓檔案到一個檔案夾中,例如/home/VNC,然後複製檔案VNCserver、VNCpasswd和XVNC到/usr/bin目錄中。假如想要能夠通過VNC伺服器的整合Java介面遠端控制Linux電腦,也得需去建立一個子目錄/usr/local/VNC/classes。在建立此子目錄之後,複製VNCJava.class檔案到此目錄中。(一般redhat 9.0內建以上檔案,所以直接用終端執行就可以)。 在Fedora 8上直接YUM下,巨方便。我從來不看怎麼安裝,這步驟的。 3.在Linux上啟動VNC Server 執行VNCserver命令: [root@Linux root]# VNCserver You will require a password to access your desktops. Password: ----為了不想任何人都可以任意遙控此電腦。因此當第1次啟動VNC server時,會要求設定網路遙控的密碼。這個就是你的登陸VNC的密碼一定要夠安全。好像哪裡的文章上講可以配置使用者的。不過80%的人群不會習慣區分使用者的。因為VNC可以虛擬N個案頭的。霍霍,配合Linux的使用者很好很強大。 Creating default startup script /root/.VNC/xstartup Starting applications specified in /root/.VNC/xstartup Log file is /root/.VNC/Linux:1.log (經上述步驟後,便已啟動了VNC Server。如果你想要更改VNC Server的密碼,只要執行VNCpasswd命令即可。) 4.在Microsoft Windows上運行VNC Viewer 直接運行“VNCviewer.exe”,系統會出現”Connection details”對話方塊。 在“Connection details”對話方塊中的“VNC server”文字框中輸入VNC Server的IP地址(或主機名稱及顯示裝置編號,(請看3。在Linux上啟動VNC server的這一行,New ‘X’ desktop is Linux:1 得到此資訊),例如:192.168.0.1:1(冒號後面的1是執行VNC Server產生的顯示裝置編號),單擊“OK”按鈕後,VNC Server即會開始檢查所輸入的資訊,若是資訊錯誤,系統會出現“Failed to connect to server”的錯誤資訊:若是資訊正確,則會接著出現“VNC Authentication”對話方塊。 若是在“VNC Authentication”對話方塊中輸入的密碼正確,就可以成功地開啟Linux的桌面視窗。 5. 從瀏覽器遠程遙控。 啟動VNC Server 後直接開啟瀏覽器,在地址欄中輸入被控端的網址或IP地址,並在網址後加上“:5800+顯示編號”的連接埠號碼即可操控該電腦。 例如:http://192.168.0.1:5801 (如果顯示編號為1,一般第一次設定的顯示編號都是1,就用5800+1=5801。) 如果看到視窗,就說明你成功,在密碼框輸入密碼,就能遠端控制了。 沒事誰用瀏覽器啊。。。。。無聊的一步 6.設定VNCserver啟動變數: 為了使VNCserver在每次啟動時保持不變的連接埠號碼(5901) 在/etc/rc.d/rc.local檔案中添加命令: rm -f /tmp/.X11-unix/X* rm -f /.VNC/*.pid rm -f /.VNC/*.log 這樣,每次啟機,系統會先把上次非順利關機時留下的臨時檔案刪除。 8、結束VNC服務及遠端桌面 VNCserver -kill :1 其它更詳細的使用請用man查看。 VNC內定的視窗管理器是twm與大家使用的可能不同,通過修改VNC的設定檔可以更換為自己喜歡的,方法如下: 修改使用者目錄下的 .VNC/xstartup 檔案 #!/bin/sh [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey VNCconfig -iconic & xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm & 將#!/bin/sh後面的內容全部注釋掉,改成 ~/.Xclients 儲存檔案 現在可以測試修改是否成功,先kill VNCserver服務 VNCserver -kill : 或 pa aux|grep XVNC kill PID 重新啟動VNCserver ,用VNCviewer串連遠端桌面是不是已經變成自己喜歡的類型了。 在前面有VNC server 設定的文章裡, 我們已經可以在一個Linux的伺服器上運行VNCserver來進行遠端存取了,但需要注意的是: 如果直接使用VNCviewer來進行訪問,有兩點不利因素: 1. 口令傳輸是明文,很容易被偵聽到. 2. 防火牆需要開啟59xx連接埠,這在通常的單位裡是不可能的. 幸運的是,我們有ssh這個強大的工具,象X11 Forwarding(另文論述),我們可以使用ssh隧道來保護通訊過程,下面就進行簡單介紹. 假設VNCserver運行在伺服器 myserver (ip地址為:192.168.x.x)的螢幕1,也就是偵聽 192.168.x.x:5901, 使用者名稱為foo 情形一: VNC用戶端為Linux 這種情形很簡單,一般的Linux發行版本裡面都預設安裝了ssh套件. 1. 用ssh登入到伺服器 ssh -L 5901:localhost:5901 -l foo myserver 或者直接用ip地址 ssh -L 5901:localhost:5901 -l foo 192.168.x.x 2. 在原生另外開的終端上,運行VNCviewer (或其它的類似工具) VNCviewer localhost:1 情形二: VNC用戶端為windows 1. 下載一個ssh用戶端,個人推薦putty,只有一個程式,不需要安裝,簡單而功能齊全. 到這裡下載http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 下載putty.exe到案頭上直接運行即可。 2. 運行putty,輸入伺服器的ip地址,輸入一個名字,這裡myserver作為session的名字,按save儲存。見附圖一 3. 單擊對話方塊左邊的tunnels來選擇相關設定,在source port裡輸入5901,在Destination裡輸入localhost:5901,按Add添加,如附圖二 4. 單擊左邊session,回到session設定,按save重新儲存。按open即可登入到伺服器。 5. 運行VNC-viewer (如果沒有,到這裡下載http://www.realVNC.com/download.html,只要一個 exe的檔案就行),在Server裡輸入localhost:1,見附圖三, 輸入口令後一個Linux的案頭就會出現在windows裡,並且是非常安全的,Cool 能玩到這步驟的都是我崇拜的對象。哈 51CTO編者注,VNC 常見問題集集錦 Q、VNC 是什麼? VNC有兩種定義:一種是軟體、一種是協議 VNC是 Virtual Network Computing 軟體是指是GNU public license下的符合VNC協議的共用軟體,.最開始是AT&T的英國實驗室 [現在這幫人成立了RealVNC公司] 開發的. 主要是讓電腦可以遠端控制另外一台電腦。現在很多公司在VNC的基礎上開發出了各種各樣的VNC. 能夠運行在各個作業系統上。 VNC協議。是指控制方和被控制電腦之間的通訊協議。VNC用的協議叫RFB .[很多人不知道吧] RFB 的協議在這裡。http://realVNC.com/docs/rfbproto.pdf Q、VNC 的優點? 第一、VNC的最大優點就是跨平台。因為不同的作業系統的介面處理方法都不一樣,所以就有人開發了不同的VNC版本,因為都符合VNC協議,所以相容性比較好。還有人做了Java版的用戶端,在能夠運行JVM的機器上都能運行用戶端。 [ 當然微軟/Uinx/Linux等也有自己的解決方案,如Terminal/PcAnywhere/Xceed等等。但是他們不開放代碼...] 第二、版本多,開放原始碼,每個人都可以不斷改進它。 [這是開放的好處] 第三、速度。速度還是挺快的,如果你的網路頻寬好的話。 Q. VNC PK MS 終端 VNC : 不用Windows的賬戶/密碼。這樣對於一次性的使用者很方便。否則每次要在Windows裡面加使用者可是很不安全的阿。 Windows: 對於Windows Server, 可以多使用者登入使用。VNC只能兩個人(控制和被控制的電腦)使用。 VNC: 可以讓控制和被控制的螢幕同時顯示、操作。這樣可以做Demo,共用交流等。Windows 沒這個功能吧! Q. 如何以圖形介面登入被控端? 編輯~/.VNC/xstartup #!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/VNC/xstartup ] && exec /etc/VNC/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey VNCconfig -iconic & #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & gnome-session & 建議選這個。。。其他的都給它前面加上# startkde & twm & gnome-session是啟動Gnome圖形介面;startkde是啟動KDE圖形介面;twm是啟動文本介面。三者選其一。 Q. 如何開機時自動啟動VNC服務 開啟“系統設定”-->"伺服器設定"-->"服務",勾選上VNCserver,“儲存”。 修改 /etc/sysconfig/VNCservers VNCSERVERS="1:root 2:phred 3:sysadmin" 1代表“案頭1”,root代表使用者名稱;可同時啟動多個使用者案頭 VNCSERVERARGS[1]="-geometry 800x600 -alwaysshared -depth 24" -alwaysshared代表允許多使用者同時登入 -depth代為色深,參數有8,16,24,32。 這步有點高深了。。。也複雜點,其實用戶端可以完成80%的配置。而我有更好的方法,因為SSH啟動是預設的。SSH上去開啟VNC就行了。也不過一條命令。更多的是安全。 Q.為什麼串連後,不能顯示案頭,而只有一個Terminal視窗? 試著修改/root/.VNC/xstartup,把最後一行 twm& 改成 gnome-session& or kde&(據說KDE在目前的VNC Viewer上的表現不太穩定) Q.為什麼重新啟動VNC Server後,串連不上了? 因為重新啟動VNC Server時,系統會指定一個新的顯示編號,需使用此新的編號,否則就無法串連. 查看VNC已啟用的案頭號及監聽進程 [root@Linux /]# netstat -tlnp |grep VNC VNCserver 命令帶有一些很有用的參數,用VNCserver --help 查看。 簡單解釋一下: VNCserver [:] [-name ] [-geometry x] [-depth ] [-pixelformat format] VNCserver -kill :display : VNC服務的display號,可以自行指定,盡量不要使用系統預設的以保證安全,必須為非0的正整數 VNCserver :99 使用時必須輸入正確的display號才能串連;用瀏覽器要在連接埠號碼加上display號,預設連接埠5800,遠端連線輸入 XXX.XXX.XXX.XXX:5899 -name 指定VNCserver案頭名字 比如要讓名字顯示為 “紅帽” VNCserver -name 紅帽 -geometry x指定顯示案頭的解析度,預設為1024x768 VNCserver -geometry 800x600 這個命令實際中很有用,例如本地解析度為1024x768 如果不設定遠程VNC服務解析度就會造成案頭顯示不全的問題。 -depth 指定顯示顏色,定義範圍8~32 VNCserver -depth 16 用16bits顏色顯示 -pixelformat 指定色素格式與-depth大致相同,只是表示方法不一樣 VNCserver -pixelformat RGB888 用24bits顏色顯示 VNCserver -kill :display |