VNC概述
我们知道在windows里面有远程桌面,在linux下我们同样有这个东西,其中最流行的一种就是VNC。其实VNC是一种协议,它的全称是virtual network computing,是一种C/S架构的协议,所以需要客户端和服务端同时执行,在服务端监听5800,5801,5901等多个可能的端口,而客户端只需要向sever端发起连接请求,并输入账号密码即可访问了
VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 、基于 UNIX 和 Linux、免费开源,远程控制能力强大,高效实用,其性能可以和 Windows 或 MAC 中的任何远程控制软件媲美。目前,原来的AT&T版本已经不再使用,因为更多有重大改善的分支版本已经出现,像是RealVNC,VNC tight 和UltraVNC。
RealVNC官方网址 : http://www.realvnc.com/
Tight VNC官方网址: http://www.tightvnc.com/
UltraVNC官方网址 : http://www.uvnc.com/
VNC原理
VNC系统由客户端,服务端和一个协议组成。VNC 的服务端目的是分享其所运行机器的屏幕, 服务端被动的允许客户端控制它。 VNC客户端(或Viewer) 观察控制服务端,与服务端交互。 VNC 协议 Protocol (RFB)是一个简单的协议,传送服务端的原始图像到客户端(一个X,Y 位置上的正方形的点阵数据), 客户端传送事件消息到服务端。
服务器发送小方块的帧缓存给客户端,在最简单的情况,VNC协议使用大量的带宽,因此各种各样的方法被发明出来减少通讯的开支,举例来说,有各种各样的编码方法来决定最有效率的方法来传送这些点阵方块)
协议允许客户端和服务端去协议哪种编码会被使用,最简单的编码,被大多数客户端和服务端所支持的是,从左到右的像素扫描数据的原始编码, 当原始的满屏被发送后,只发送变化的方块区域。这种编码在幁间只有小部分屏幕变化的情况下工作的非常好(像是鼠标键在桌面移动的情况,或在光标处敲击文字),不过如果大量的像素同时变化带宽将会增加的非常高,像是拖动一个窗口或观看全屏录像。
远程桌面Linux服务器
1、CentOS服务器端的安装
yum install tigervnc-server
2、Windows客户端
下载地址:http://sourceforge.net/projects/tigervnc/
下载文件: vncviewer64-1.5.0.exe
3、linux客户端
在linux上安装vnc的客户端vncviewer
#yum install vnc //这个就是vncviewer的安装包
启动客户端
vncviewer
或者
vncviewer ip:n
4、启动vncserver
vncserver :n
其中n为桌号,不同用户的桌号也不能相同。当你第一次启动vncserver时,会要求指定密码,该密码是VNC客户端连接时要输入
5、设置修改远程桌面密码
分别以oracle和root执行vncpasswd, 如果还未设置VNC用户密码,启动vncserver服务,则会报如下错误:
# 设置远程桌面密码
vncpasswd
6、启动客户端
关于VNC服务使用的端口号与桌面号相关,VNC使用TCP端口从5900开始,对应关系如下
桌面号为“1” ---- 端口号为5901
桌面号为“2” ---- 端口号为5902
桌面号为“3” ---- 端口号为5903
……
XVNC不仅支持vncview等客户端程序,还支持浏览器控制。基于Java的VNC客户程序Web服务TCP端口从5800开始,也是与桌面号相关,浏览器直接输入地址http://IP:5800,就会启动Java客户端连接。
桌面号为“1” ---- 端口号为5801
桌面号为“2” ---- 端口号为5802
桌面号为“3” ---- 端口号为5803
7、关闭vncserver(服务器端)
vncserver -kill :n
8、列出当前连接的客户端
vncserver –list
9、开机自动启动
上面的操作都是要先登录Linux端,然后手动启动vncserver服务后,才能使用VNC连接。如果你想开机自启动vncserver服务,必须这样做。
修改配置文件 /etc/sysconfig/vncservers,配置远程登录用户, vncservers是用来设定可以使用VNC的服务器账号,可以设定多个,例如上面oracle、root,但是中间要用空格隔开。
vi /etc/sysconfig/vncservers # 去掉最后两行的注释 VNCSERVERS="1:oracle 2:root" VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp -nohttpd" VNCSERVERARGS[2]="-geometry 1024x768 -nolisten tcp -nohttpd" # 使生效 source /etc/sysconfig/vncservers
关于参数配置说明:
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默认值,要密码认证。
#设置开机启动
chkconfig vncserver on
相当于开机启动的时候,oracle用户执行了 vncserver :1 , root执行了 vncserver :2
10、常见连接错误
开启端口(以80端口为例)
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 写入修改 /etc/init.d/iptables save 保存修改 service iptables restart 重启防火墙,修改生效
10061 未启动vncserver