VNC概述

  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 是当前最活跃和强大的主流应用。

  VNC一共有三个版本,TightVNC、RealVNC、UltraVNC,RealVNC旨在推进商业化,因此需要License;TightVNC旨在改善服务器和查看器之间的VNC压缩,但是该版本最大的缺点是不能远程复制粘贴,而RealVNC则可以(这里的复制粘贴指的是文本的复制粘贴,文件的复制粘贴各版本都不支持);最后是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协议使用大量的带宽,因此各种各样的方法被发明出来减少通讯的开支,举例来说,有各种各样的编码方法来决定最有效率的方法来传送这些点阵方块)

协议允许客户端和服务端去协议哪种编码会被使用,最简单的编码,被大多数客户端和服务端所支持的是, 从左到右的像素扫描数据的原始编码, 当原始的满屏被发送后,只发送变化的方块区域。这种编码在幁间只有小部分屏幕变化的情况下工作的非常好(像是鼠标键在桌面移动的情况,或在光标处敲击文字),不过如果大量的像素同时变化带宽将会增加的非常高,像是拖动一个窗口或观看全屏录像。

VNC默认使用TCP端口5900至5906,而JAVA的VNC客户端使用5800至5806。一个服务端可以在5500口用“监听模式”连接一个客户端,使用监听模式的一个好处是服务端不需要设置防火墙。

UNIX上的VNC称为xvnc,同时扮演两种角色,对X窗口系统的应用程序来说它是X server,对于VNC客户端来说它是VNC服务器程序。

一、tigervnc

1. 安装VNC

sudo yum install tigervnc tigervnc-server

2. 修改配置

sudo vim /etc/sysconfig/vncservers

修改内容如下:

# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service
 
# VNCSERVERS="桌面号:系统用户 桌面号:系统用户"
VNCSERVERS="1:zhang 2:root"
 
# VNCSERVERARGS[桌面号]="-geometry 分辨率 -alwaysshared[允许多个客户端同时连接] -depth [色深,值有8,16,24,32]"
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared -depth 24"
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared -depth 24"

3. 设置密码

vncpasswd

4. 启动服务

vncserver

*防火墙开放端口

首先判断firewalld是否启动,输入以下命令判断

sudo firewall-cmd --state

如果启动应该输出:running

如果是:not running,执行下面命令

sudo systemctl start firewalld

添加端口号5901-5905

sudo firewall-cmd --permanent --zone=public --add-port=5901-5905/tcp

重新加载防火墙

sudo firewall-cmd --reload

可以使用下面命令查看端口号是否被加入

firewall-cmd --list-all-zones
# 或者(只查看活动的)
firewall-cmd --list-all

删除规则例子

firewall-cmd --permanent --zone=public --remove-port=5901-5905/tcp

 

 

5. 客户端连接

若没有客户端,可前往 这里下载

 

 

 

 

 

 

二、realvnc

1. 下载deb或rpm安装包

官方下载地址:https://www.realvnc.com/en/connect/download/vnc/

CSDN下载地址:https://download.csdn.net/download/u013992330/18503629

2. 安装

下载之后直接安装即可,例如kylin平台使用deb包进行安装:

sudo dpkg -i VNC-Server-6.7.4-Linux-x64.deb

3. 加载VNC License

由于RealVNC旨在推进商业化,因此在安装之后需要使用vnclicense加载License,命令如下:

vnclicense -add xxxx  # xxxx 是License序列号,也就是realvnc license key,自己想办法搞到。

vnclicense工具的其他用法可使用vnclicense –help查看。

 

 

 License加载之后,可使用vnclicense -list查看:

 

 

 

4. 启动VNC

realvnc有两种启动方式,一种是virtual,一种是x11,virtual跟上边的TightVNC原理差不多,x11则是直接连接的服务器的X桌面,跟你直接在服务器上操作是一样的。两种选择其中一种启动、使用即可。

a.  virtual启动:

systemctl start vncserver-virtuald.service

查看启动状态:

systemctl status vncserver-virtuald.service

b.  x11启动:

systemctl start vncserver-x11-serviced.service

查看启动状态:

systemctl status vncserver-x11-serviced.service

5. 连接VNC Server

连接方法跟上边的TightVNC一样,但是我在连接的时候,使用 IP:桌面号 的方式连接不上,因此查看了它监听的端口,使用端口连接成功了,端口查看命令:

netstat -tnlp |grep vnc

 

 可以看到virtual的监听端口是5999,x11的监听端口是5900,现在使用ip:port的方式就可以连接了。

 

 

————————————————
版权声明:本文为CSDN博主「password-u」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013992330/article/details/116049635

 


							
版权声明:本文为*(00)*原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zouhao/p/16508052.html