局域网远程控制工具之VNC

       VNC (Virtual Network Console)是虚拟网络控制台控制台的缩写。它 是一款优秀的远程控制工具软件,由著名的AT&T的欧洲研究实验室开发的。VNC 是在基于UNIX 和Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows和MAC中的任何远程控制软件媲美。 在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,vncconnect。大多数情况下用户只需要其中的两个命令:vncserver 和 vncviewer。

VNC组成部分

VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer);另外一部分是服务器端的应用程序(vncserver)。VNC的基本运行原理和一些Windows下的远程控制软件很相像。VNC的服务器端应用程序在UNIX和Linux操作系统中适应性很强,图形用户界面十分友好,看上去和Windows下的软件界面也很类似。在任何安装了客户端的应用程序(vncviewer)的Linux平台的计算机都能十分方便地和安装了服务器端的应用程序(vncserver)的计算机相互连接。另外,服务器端 (vncserver)还内建了Java Web接口,这样用户通过服务器端对其他计算机的操作就能通过浏览器显示出来了,这样的操作过程和显示方式比较直观方便。

VNC特点

同样可能远程连入UNIX、Linux进行图形化操作的还有流行的Xmanager,VNC与之相比——两者工作原理不一样,前者(VNC)是远程连入操作系统,所有操作在UNIX、Linux主机服务端进行,即使操作过程中“本地电脑与操作主机网络断开”,也不影响操作的顺利进行;而后者(Xmanager)是通过端口将主机服务器的UI界面引导到本地电脑进行展现,如操作过程出现“本地电脑与操作主机网络断开”,操作将中断失败!如果操作中进行的工作任务非常重要,不能中断,如ORACLE RAC实施,结果是灾难性的!更重要的是,VNC是免费的、开源的,Xmanager你可能用的是破解注册版的。

VNC原理

1、屏幕控制原理

       VNC是把被控制端的屏幕做成图像,经过压缩后传送到控制端,控制端的控制信息(如鼠标信息)传送到被控制端后进入消息队列

       客户端                                         X服务器                                            应用程序
vnc viewer<----------------------->Xvnc(vnc server)<------------------------>applications
                       (vnc protocal)                                             (X protocal)                    

其控制是基于tcp/ip的,其中vnc server扮演了双重角色,vnc protocal是基于RFB protocal的。

数据的进行再server上,viewer只是作为一个显示终端,类似于windows下的mstsc

2、截屏方式

       VNC使用的截屏方式比较独特,它有两种方式:第一种是使用钩子自动报告需要截屏的区域;第二种是轮询某一个区域(如前景窗口)。截屏后使用某种压缩算法压缩后发送。

3、传输方式

1)RFB协议传输:

在控之端不能直接改变显示大小,只能进行缩放,如缩放为原大小的几倍。原理是在远程机器上运行一个额外的X服务器,X服务器和客户机器都在远程跑。然后通过RFB协议用自己的客户端显示到本地。

2)X协议:

X 视窗系统提供了一个公开协议,由其客户程序可以查询和更新 X 服务器上的信息。X 视窗系统(X 协议)允许网络中不同计算机上的进程在其它网络显示器上显示内容。

VNC命令描述

vncserver

此服务程序必须在在主(或遥控)计算机上运行。你只能作为使用者(不需要根用户身份)使用此项服务。

vncviewer

本地应用程序,用于远程接入运行vncserver的计算机并显示其环境。你需要知道远程计算机的IP地址和vncserver设定的密码

vncpasswd

vncserver的密码设置工具。vncserver服务程序没有设置密码将不能运行(好习惯)。如果你没有设置,运行vncserver时它会提示你输入一个密码。所以,一般我不会单独运行这个命令来设置密码。

vncconnect

告诉vncserver连接到远程一个运行vncviewer的计算机的IP和端口号。这样我就可以避免给其他人一个接入的密码。

Xvnc

一个vnc“主控”程序,一般来说不需要直接运行。(vncserver和vncviewer实际上是Xvnc的脚本)

查找所有可用的选项,运行:

Xvnc --help

出于安全的考虑,一般不建议直接以超级用户帐号运行vncserver程序。如果你需要超级用户的环境,请以一般用户登录后再使用su命令登录到超级用户帐号。

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

安装VNC

yum install vnc-server

添加用户

useradd vnc

passwd vnc

设置用户的vnc密码

su vnc

vncpasswd

exit

编辑vnc配置文件

vi /etc/sysconfig/vncservers

在最后加上:

VNCSERVERS="1:vnc"

VNCSERVERARGS[1]="-geometry 1024x768"

创建xstartup脚本

centos6用户忽视此步

/sbin/service vncserver start

/sbin/service vncserver stop

su vnc

vi ~/.vnc/xstartup

加入如下代码:

#!/bin/sh

# Add the following line to ensure you always have an xterm available.

( while true ; do xterm ; done ) &

# 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 &

退出到root:

exit

启动vnc

/sbin/service vncserver start

测试vnc

7.1、使用java连接vncserver

在浏览器中输入http://192.168.0.10:5801登录桌面。

7.2、使用vnc viewer连接vncserver

打开vnc viewer,在server中输入192.168.0.10:1进行连接。

注意:192.168.0.10替换成自己的服务器IP。

VNC工作流程

(1) 在服务器端启动 VNC Server。

(2) VNC客户端通过浏览器或 VNC Viewer 连接至VNC Server。

(3) VNC Server传送一对话窗口至客户端,要求输入连接密码, 以及存取的VNC Server显示装置。

(4) 在客户端输入联机密码后,VNC Server验证客户端是否具有存取权限。

(5) 若是客户端通过 VNC Server 的验证,客户端即要求VNC Server显示桌面环境。

(6) VNC Server通过X Protocol 要求X Server将画面显示控制权交由VNC Server负责。

(7) VNC Server将来由 X Server 的桌面环境利用VNC通信协议送至客户端, 并且允许客户端控制VNC Server的桌面环境及输入装置。

猜你喜欢

转载自blog.csdn.net/fuhanghang/article/details/83547763