VNC

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

clip_image001[4]

3、linux客户端

在linux上安装vnc的客户端vncviewer

#yum install vnc    //这个就是vncviewer的安装包

启动客户端

vncviewer 
或者
vncviewer  ip:n

clip_image002[4]

4、启动vncserver

vncserver :n

其中n为桌号,不同用户的桌号也不能相同。当你第一次启动vncserver时,会要求指定密码,该密码是VNC客户端连接时要输入

5、设置修改远程桌面密码

分别以oracle和root执行vncpasswd, 如果还未设置VNC用户密码,启动vncserver服务,则会报如下错误:

# 设置远程桌面密码

vncpasswd

6、启动客户端

clip_image003[4]

关于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、常见连接错误

clip_image004[4]

开启端口(以80端口为例)

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT   写入修改

/etc/init.d/iptables save   保存修改

service iptables restart    重启防火墙,修改生效

clip_image005[4]

10061 未启动vncserver

参考:

远程桌面软件VNC的安装与配置

vncserver 图形界面显示

linux下VNC的配置及使用

Linux系统VNC配置实践总结

原文地址:https://www.cnblogs.com/xqzt/p/4919046.html