当前位置: 首页 > news >正文

VNC详解

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

组成部分

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

特点

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

命令描述

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

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脚本

centos-6用户忽视此步

/sbin/servicevncserverstart

/sbin/servicevncserverstop

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。

工作流程

(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的桌面环境及输入装置。

相关文章:

  • wireshark详解
  • AForge详解
  • C#版本和.NET版本以及VS版本的对应关系
  • ActionBar、TitleBar、ToolBar的联系和区别
  • xmlns, xmlns:xsi, xsi:schemaLocation 解释
  • Android SplashActivity
  • ICE详解
  • Retrofit2深入浅出
  • Android中的单位(dp、sp、dpi)
  • VS生成项目时,有些文件无法复制到输出目录的解决办法
  • .net framework4与其client profile版本的区别
  • ICE中的基本概念
  • ICE简单介绍及使用示例
  • ICE的proxy使用
  • Composite UI Application Block (CAB) 详解
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Android组件 - 收藏集 - 掘金
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • DOM的那些事
  • Effective Java 笔记(一)
  • Java程序员幽默爆笑锦集
  • Java精华积累:初学者都应该搞懂的问题
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • js作用域和this的理解
  • leetcode-27. Remove Element
  • Linux gpio口使用方法
  • miaov-React 最佳入门
  • mysql 数据库四种事务隔离级别
  • Python学习之路13-记分
  • React 快速上手 - 07 前端路由 react-router
  • SOFAMosn配置模型
  • Spark学习笔记之相关记录
  • tensorflow学习笔记3——MNIST应用篇
  • webpack入门学习手记(二)
  • 初识MongoDB分片
  • 创建一个Struts2项目maven 方式
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 多线程事务回滚
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 微服务框架lagom
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • #NOIP 2014# day.2 T2 寻找道路
  • (10)STL算法之搜索(二) 二分查找
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (分类)KNN算法- 参数调优
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)WLAN定义和基本架构转
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • *ST京蓝入股力合节能 着力绿色智慧城市服务