歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux基礎知識 >> Linux系統下搭建VNC遠程控制軟件

Linux系統下搭建VNC遠程控制軟件

日期:2017/3/2 14:47:11   编辑:Linux基礎知識

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命令即可。)

.在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 能玩到這步驟的都是我崇拜的對象。哈

中國IT實驗室編者注,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
 

Copyright © Linux教程網 All Rights Reserved