VNC是由AT&T试验室开发,是一款优秀的远程控制工具软件,后来以GPL授权的形式开源。经过几年的发展,现在的VNC已经不单指某个软件,而是一类软件的通称。下面介绍Linux下常用的两个VNC软件。

VNC的原理就是不停的对窗口界面截屏,再将图像传输给客户端,同时VNC服务器端接管服务器端的键盘、鼠标控制权,客户端可以通过服务器端操纵键盘鼠标。比较类似Windows下的pcAnywhere。

一、Windows 端设置

先讲Windows端是因为,下述的两个VNC可以用同一个客户端连接。

在Windows平台上,客户端我选择了RealVNC。RealVNC包括了一整套的服务器端与客户端,如果只安装客户端是不需要注册码的,其客户端程序名为vncviewer.exe,这是个绿色软件,你可以从安装目录下拷贝到其他电脑中运行。

二、VINO

VINO是Gnome中集成的一个VNC软件,安装Gnome环境时默认安装,点击“系统”-“首选项”-“远程桌面”就打开了其配置窗口。

选中“允许其他人查看您的桌面”后VINO就会启动服务器端进程vino-server,同时它监听TCP 5900端口。如果不选中“允许其他用户控制您的桌面”,客户端则只能观看不能操纵。

VINO的模式与下面介绍的XVNC有很大不同,我觉得VINO其实是“Windows下的远程协助”,因为客户端显示的桌面与Linux端本地显示器中显示的桌面一样,如果你操纵客户端中的鼠标,Linux的显示器也能看到鼠标在跑。如果你在Windows下安装过VNC服务器端,效果就是这个样。

另外,VINO的带宽占用真是变态,就算是一进桌面什么都不打开无操作的情况下,带宽也要占到4-5Mbps(桌面1280×1024,色彩24),如果有操作会占到8-12Mbps。

所以,VINO不适合做为服务器的日常远程管理,比较适合做为Linux下的远程协助和远程教学,也就是说你遇到一个问题,求助高手,而高手可以手把手的教你,你可以直接观看屏幕学习,或者做故障重现,你在本地做故障或Bug重现,而工程师可以远程观看。

三、XVNC

XVNC就是大家所熟悉的vnc或vncserver,是由RealVNC公司开发的开源版的VNC软件。

1、安装XVNC。

安装Linux时,可以从安装包中选中。若没有安装,可以从安装盘中找到。

服务器的组件名叫 vnc-server。请执行 rpm -q vnc-server 这个指令。

它的输出应该是 package vnc-server is not installed 或类似 vnc-server-4.0-11.el4。

假如服务器未被安装,请用这个指令来安装它:yum install vnc-server。

2、启动vncserver。

在终端中输入:

vncserver :1 -geometry 1280x1024 –depth 24  注::1指1号窗口,-geometry指窗口分辨率,-depth指色彩数

也可以简单的指定:

vncserver :1  注:使用RealVNC的客户端,窗口分辨率与色彩数可以在客户端指定

当你第一次启动vncserver时,会要求指定密码,该密码是VNC客户端连接时要输入。

窗口可以从0开始指定,如果Linux本地端已经启用图形环境,则必须从1开始指定,因为窗口0被X11占用。

3、配置xstartup

XVNC默认采用twm做为图形环境,如果你安装了KDE或Gnome也可以启动。

vi ~/.vnc/xstartup

显示如下内容:

#!/bin/sh

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

最后一行twm &表示启动twm,修改成gnome-session &启动Gnome,修改成startkde &启动KDE。

如果Linux本地端已经启用Gnome或KDE图形环境,当VNC客户端连接服务器后,可能会只显示灰屏,没有正常启用图形环境。查看~/.vnc下的日志时会提示错误:You are already running a session manager。

这时需要去掉xstartup文件中的

# unset SESSION_MANAGER

# exec /etc/X11/xinit/xinitrc

这两行前的#,再重启vncserver。如果Linux本地端是init 3模式,则不需要修改这两行。

当vnc客户端连接服务器时显示的界面是英文的,主要是中文环境还没有装入,而且没有中文输入法。在# exec /etc/X11/xinit/xinitrc行后添加下面内容:

export LANG=zh_CN.UTF-8  注:启用中文环境

scim –d  注:加载scim输入法

4、关闭vncserver

vncserver –kill :1  注:关闭窗口1,以此类推关闭窗口2就为:2

当所有窗口都关闭vncserver服务就关闭了。

5、客户端使用

XVNC不仅支持vncview等客户端程序,还支持浏览器控制。

浏览器直接输入地址http://IP:5800,就会启动Java客户端连接。

窗口0占用TCP 5900端口(VNC客户端),TCP 5800端口(浏览器)。

窗口1占用TCP 5901端口(VNC客户端),TCP 5801端口(浏览器)。

窗口2、3以此类推。

6、开机自启动vncserver

上面的操作都是要先登录Linux端,然后手动启动vncserver服务后,才能使用VNC连接。如果你想开机自启动vncserver服务,必须这样做。

先按上面的步骤启动一次vncserver,确保密码和xstartup文件都建立了。

然后,vi /etc/sysconfig/vncservers,添加如下内容:

VNCSERVERS="1:root 2:zhang 3:li"  注:1、2、3代表窗口,比如root用户用窗口1,zhang用户用窗口2,这里的用户是指Linux中的正规的用户帐户

VNCSERVERARGS[1]="-geometry 640x480 –depth 24"  注:为root用户指定分辨率和色彩数,这里的[1]指上面的“1:root”

VNCSERVERARGS[2]="-geometry 640x480 –depth 16"  注:为zhang用户指定分辨率和色彩数

VNCSERVERARGS[3]="-geometry 800x600"

注:上面的这三行可以不添加,由vnc客户端自行控制分辨率和色彩。上面的root、zhang、li用户必须确保密码和xstartup文件都建立了,你可以分别登录先执行一次vncserver :1。

最后,执行/sbin/chkconfig vncserver on指令。

7、安全

XVNC的数据传输都是明文的,因涉及服务器的管理,使用明文是不可接受的。

我们可以使用SSH加密VNC数据。

首先,开启Linux端的SSH服务。

第二,在Windows端下载一个SSH telnet工具。推荐的有PuTTy,SecureCRT。

第三,启用SSH隧道。下面以SecureCRT为例,PuTTy操作类似。

先建立一个连接到Linux端的普通SSH会话。

在该会话选项中“端口转发”中,添加“本地端口转发属性”。

见右图中,在“本地”中输入一个端口,这里选择了5901,也可以选择5801或其他端口,只要不与本地的服务相冲突,这个本地端口与Linux中vncserver监听的窗口端口无关,在“远程”中输入5901,这个端口是Linux端的vncserver监听的端口,这里是启动窗口1,如果启动窗口2则这里要输入5902。确定。

设置完后,在SecureCRT中启动与Linux的SSH会话,正确登录Linux后。打开vncviewer。

在VNC服务器中输入:localhost:5901(这里的端口就是上面指定的本地端口,而非Linux端的端口),因为这里要连接的是本地的SecureCRT启动的SSH隧道。在VNC运行过程中SecureCRT不能关闭。

这样,在Linux端的防火墙就可以只开放SSH端口,关闭掉有关VNC的所有端口。

8、结论

XVNC是一个非常好的日常用服务器管理工具,你可以根据你的网络带宽调整画质,如果你的带宽偏小,可以调小分辨率与色彩数,XVNC无操作时基本没有数据,如果是800×600分辨率,最差画质,它只会占几百Kb甚至十几Kb的带宽,这一点上非常适合做服务器管理。

在 Windows 下远程桌面连接 Linux - VNC 篇的更多相关文章

  1. 在 Windows 下远程桌面连接 Linux - XManager 篇

    XManager是一个简单易用的高性能的运行在Windows平台上的X-Server软件,而Gnome和KDE就是X-Client,Linux下的X-Server则为Xorg.它能把远端Unix/Li ...

  2. windows下远程桌面连接centos

    最近,由于项目需要,必须要在centos下进行操作.习惯了图形界面的我,通过黑框框来远程操作服务器,着实让人难受.但是,windows自带的远程桌面工具貌似不能直接连centos.所以,只能借助其他工 ...

  3. xmanager 在 Windows 下远程桌面连接 麒麟

    编辑/etc/gdm/custom.conf,添加如下内容: [daemon] RemoteGreeter=/usr/libexec/gdmgreeter  注:“远程登录界面与本地登录界面相同”功能 ...

  4. xmanager远程桌面连接Linux

    远程桌面连接Linux,两种工具:vnc.xmanager xmanager使用参考如下,暂未整理: Xmanager连接Centos的远程桌面 | 大爱 http://lovesoo.org/xma ...

  5. 20180726 - Windows 10 Pro 下远程桌面连接提示“出现身份验证错误”

    问题:Windows 10 Pro 下远程桌面连接提示“出现身份验证错误” [Window Title]远程桌面连接 [Content]出现身份验证错误.要求的函数不受支持 远程计算机: 192.16 ...

  6. [转帖]CentOS7安装xrdp(windows远程桌面连接linux)

    CentOS7安装xrdp(windows远程桌面连接linux) https://blog.csdn.net/sgrrmswtvt/article/details/81869208 You Konw ...

  7. 使用windows的远程桌面连接连接Ubuntu

    想起来用笔记本连接一个windows server时只需要在远程桌面连接里面输入一下ip地址然后账号密码就可以了,十分简单.于是乎既然装了个Ubuntu当服务器使那么我就业来远程连接一下,由于wind ...

  8. RedHat6.5如何被windows系统远程桌面连接

    一.redhat 6.5远程桌面配置 服务器端: 1.设置允许其它人查看您的远程桌面 在“系统”-“首选项”-“远程桌面”-在“允许其它人查看您的远程桌面”前打勾:在“允许其它用户控制您的桌面”打勾 ...

  9. 【转】用win7(64位)远程桌面连接linux(Ubuntu14.04)详细教程

    转自:http://blog.csdn.net/qq754438390/article/details/50042511 亲测,确实是可以.非常感谢原博. 用win7(64位)远程桌面连接linux( ...

随机推荐

  1. TCP/IP笔记 三.运输层(4)——TCP链接管理与TCP状态机

    1. 建立连接 三次握手 (1)A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1,并选择序号 x,表明传送数据时的第一个数据字节的序号是 x. (2)B 的 TCP ...

  2. 在windows系统中安装hadoop

    1.安装Cygwin 从http://www.cygwin.com/ 下载cygwin的setup.exe,双击运行: 选择从Internet安装: 设置安装目录: 设置安装包目录: 设置“Inter ...

  3. Why is celsius = 5 * (fahr - 32) / 9 ?

    Go to my personal blog There is a program to print Fahrenheit-Celsius table as below. #include <s ...

  4. 让自己的apk可以被别人用二维码下载

    通过二维码下载的流程是, 1.截获地址当有一个url被二维码扫描后的被截获,请先确认能够被截获. 2.接受intent无论是把这个消息的地址发送给activity,还是reciver,都要进入到你的程 ...

  5. Android.mk的用法和基础

    一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个 ...

  6. 基本属性 - iOS中的本地通知

    本地通知的基本使用 创建本地通知 设置属性 调度通知(添加通知到本地通知调度池) 注册用户通知权限(只需一次, 可以单独放在Appdelegate中, 或者别的地方) —> iOS8以后必须, ...

  7. linux shell: 搜索字符串,剔除包含特定字符的行

    搜索代码中出现CONFIG_BOOTARGS的行,但又不希望有#define和#undef, 暂时不知带如何直接用一个语句做到,因此用了如下三个语句. find . -type f | xargs g ...

  8. OpenCV 安装

    OpenCV 安装 一.环境说明: 操作系统:window10 opencv版本是:VERSION3.1 二.安装过程: [1]官网下载:http://opencv.org/downloads.htm ...

  9. STL之vector(向量)

    C++编程语言中有一种叫做Vector的应用方法,它的作用在实际编程中是非常重要的,这里详细介绍一下C++ Vector的相关应用技巧及基本内容: Construct vector #include ...

  10. hdu1695 GCD

    http://acm.hdu.edu.cn/showproblem.php?pid=16951 /** 大意: a<=x<=b , c<= y <= d ,求在此范围内 有多少 ...