Linux配置vnc

VNC概述html

   VNC (Virtual Network Computing)是虛擬網絡計算機的縮寫。VNC 是一款優秀的遠程控制工具軟件,由著名的 AT&T 的歐洲研究實驗室開發的。VNC 是在基於 UNIX 和 Linux操做系統的免費的開源軟件遠程控制能力強大,高效實用,其性能能夠和Windows 或 MAC 中的任何遠程控制軟件媲美。在 Linux 中,VNC 包括如下四個命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多數狀況下只須要其中的兩個命令:vncserver 和 vncviewer。目前,原來的AT&T版本已經再也不使用,由於更多有重大改善的分支版本已經出現, 像是RealVNC, VNC tight 和UltraVNC。 Real VNC 是當前最活躍和強大的主流應用。ios

 RealVNC官方網址  :  http://www.realvnc.com/web

 Tight VNC官方網址:  http://www.tightvnc.com/緩存

 UltraVNC官方網址 : http://www.uvnc.com/服務器

 

VNC原理網絡

VNC系統由客戶端,服務端和一個協議組成。VNC的服務端目的是分享其所運行機器的屏幕, 服務端被動的容許客戶端控制它。 VNC客戶端(或Viewer) 觀察控制服務端,與服務端交互。 VNC 協議 Protocol (RFB)是一個簡單的協議,傳送服務端的原始圖像到客戶端(一個X,Y 位置上的正方形的點陣數據), 客戶端傳送事件消息到服務端。app

服務器發送小方塊的幀緩存給客戶端,在最簡單的狀況,VNC協議使用大量的帶寬,所以各類各樣的方法被髮明出來減小通信的開支,舉例來講,有各類各樣的編碼方法來決定最有效率的方法來傳送這些點陣方塊)dom

協議容許客戶端和服務端去協議哪一種編碼會被使用,最簡單的編碼,被大多數客戶端和服務端所支持的是, 從左到右的像素掃描數據的原始編碼, 當原始的滿屏被髮送後,只發送變化的方塊區域。這種編碼在幁間只有小部分屏幕變化的狀況下工做的很是好(像是鼠標鍵在桌面移動的狀況,或在光標處敲擊文字),不過若是大量的像素同時變化帶寬將會增長的很是高,像是拖動一個窗口或觀看全屏錄像。ssh

VNC默認使用TCP端口5900至5906,而JAVA的VNC客戶端使用5800至5806。一個服務端能夠在5500口用「監聽模式」鏈接一個客戶端,使用監聽模式的一個好處是服務端不須要設置防火牆。tcp

UNIX上的VNC稱爲xvnc,同時扮演兩種角色,對X窗口系統的應用程序來講它是X server,對於VNC客戶端來講它是VNC服務器程序。

 

實驗環境

     VNC服務端:

             操做系統:Red Hat Enterprise Linux Server release 5.7 (Tikanga)

     VNC客戶端:

             操做系統:Windows 7專業版  64位操做系統

 

VNC安裝配置

1、安裝VNC包

[root@localhost /]# cd  /depot/os/mnt/cdrom/Server

[root@localhost /]# rpm -ivh vnc-server-4.1.2-14.el5_6.6.x86_64.rpm

[root@localhost /]# rpm -ivh vnc-4.1.2-14.el5_6.6.x86_64.rpm

驗證vnc-server包是否安裝成功:

[root@localhost /]# rpm -qa vnc-server

vnc-server-4.1.2-14.el5_6.6

2、配置vncservers文件

修改/etc/sysconfig/vncservers文件,未經修改的vncservers文件以下所示:

[root@localhost ~]# more /etc/sysconfig/vncservers

# The VNCSERVERS variable is a list of display:user pairs.

#

# Uncomment the lines below to start a VNC server on display :2

# as my 'myusername' (adjust this to your own).  You will also

# need to set a VNC password; run 'man vncpasswd' to see how

# to do that. 

#

# DO NOT RUN THIS SERVICE if your local area network is

# untrusted!  For a secure way of using VNC, see

# <URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html>.

# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.

# Use "-nohttpd" to prevent web-based VNC clients connecting.

# Use "-localhost" to prevent remote VNC clients connecting except when

# doing so through a secure tunnel.  See the "-via" option in the

# `man vncviewer' manual page.

# VNCSERVERS="2:myusername"

# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"

clip_p_w_picpath002

將最後兩行配置信息取消註釋,添加系統帳號

VNCSERVERS="1:root 2:etl"

VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp -nohttpd "

VNCSERVERARGS[2]="-geometry 1024x768 -nolisten tcp -nohttpd "

VNCSERVERS 是用來設定可使用VNC的服務器帳號,能夠設定多個,例如上面root、etl,可是中間要用空格隔開。使用VNCVIEWER登陸時,192.168.48.128:1表示是以root帳號登陸,以此類推。

關於參數配置說明:

1:-geometry 表示桌面分辨率,默認爲1024x768,因此上面的1024x768也能夠不寫。

2:-nohttpd  表示不監聽HTTP端口(58xx)。

3:-nolisten tcp 表示不監聽TCP端口(60xx)

4:-localhost 只運行從本機訪問。

5:AlwaysShared 默認只容許一個VNCVIEWER鏈接,此參數表示同一個顯示端口容許多用戶同時登陸.

6:-depth  表示色深,參數有8,16,24,32.

7: SecurityTypes None 登陸不須要密碼認證VncAuth默認值,要密碼認證。

三、設置VNC用戶密碼

若是此時不設置VNC用戶密碼,啓動vncserver服務,則會報以下錯誤:

[root@localhost ~]# service vncserver start

Starting VNC server: 1:root [FAILED]

[root@localhost /]# vncpasswd

Password:

Verify:

[root@localhost /]# su - etl

[etl@localhost ~]$ vncpasswd

Password:

Verify:

[etl@localhost ~]$

四、啓動vncserver服務

[root@localhost ~]# service vncserver start

Starting VNC server: 1:root

New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1

Creating default startup script /root/.vnc/xstartup

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/localhost.localdomain:1.log

2:etl

New 'localhost.localdomain:2 (etl)' desktop is localhost.localdomain:2

Creating default startup script /home/etl/.vnc/xstartup

Starting applications specified in /home/etl/.vnc/xstartup

Log file is /home/etl/.vnc/localhost.localdomain:2.log

[  OK  ]

VNC會在用戶根目錄($HOME)下的".vnc"文件夾下生成一系列文件。其中passwd爲vnc用戶密碼文件,由vncpasswd生成。其餘的都由vnc初次啓動時生成,xstartup爲VNC客戶端鏈接時啓動的腳本

五、配置xstartup文件

以下所示,將下面紫紅色的部分註釋取消。

clip_p_w_picpath004

#!/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" &

twm &

切換到etl帳號,依法炮製

[root@localhost ~]# su - etl

[etl@localhost ~]$ vi /home/etl/.vnc/xstartup

clip_p_w_picpath006

[root@localhost ~]# service vncserver restart

Shutting down VNC server: 1:root 2:etl [  OK  ]

Starting VNC server: 1:root

New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/localhost.localdomain:1.log

2:etl

New 'localhost.localdomain:2 (etl)' desktop is localhost.localdomain:2

Starting applications specified in /home/etl/.vnc/xstartup

Log file is /home/etl/.vnc/localhost.localdomain:2.log

[  OK  ]

六、配置防火牆

若是你不配置防火牆,此時用VNC Viewer鏈接的話,通常會報:"connect:Connection timed out(10060)"錯誤,以下所示:

clip_p_w_picpath008

clip_p_w_picpath010

通常這種狀況要麼關閉防火牆,要麼須要配置防火牆。

[root@localhost ~]# service iptables stop

Flushing firewall rules: [  OK  ]

Setting chains to policy ACCEPT: filter [  OK  ]

Unloading iptables modules: [  OK  ]

關閉防火牆後,用VNCView鏈接服務器沒有問題,可是通常不建議關閉防火牆,

[root@localhost ~]# service iptables restart

Flushing firewall rules: [  OK  ]

Setting chains to policy ACCEPT: filter [  OK  ]

Unloading iptables modules: [  OK  ]

Applying iptables firewall rules: [  OK  ]

Loading additional iptables modules: ip_conntrack_netbios_ns [  OK  ]

[root@localhost ~]# iptables -I INPUT -p tcp --dport 5901 -j ACCEPT

[root@localhost ~]# iptables -I INPUT -p tcp --dport 5902 -j ACCEPT

clip_p_w_picpath012

OK,能夠經過VNC鏈接到服務器了

 

關於VNC服務使用的端口號與桌面號相關,VNC使用TCP端口從5900開始,對應關係以下 
桌面號爲「1」 ---- 端口號爲5901 
桌面號爲「2」 ---- 端口號爲5902 
桌面號爲「3」 ---- 端口號爲5903 
…… 
基於Java的VNC客戶程序Web服務TCP端口從5800開始,也是與桌面號相關,對應關係以下 
桌面號爲「1」 ---- 端口號爲5801 
桌面號爲「2」 ---- 端口號爲5802 
桌面號爲「3」 ---- 端口號爲5803 
基於上面的介紹,若是Linux開啓了防火牆功能,就須要手工開啓相應的端口,以開啓桌面號爲「1」相應的端口爲例,命令以下

開機自啓動vncserver服務 
# chkconfig vncserver on

轉自:

做者:瀟湘隱者

出處:http://www.cnblogs.com/kerrycode/

相關文章
相關標籤/搜索