当前位置: > Linux服务器 > VNC >

Linux VNC远程控制安装日记

时间:2015-02-08 22:28来源:linux.it.net.cn 作者:IT

Linux VNC远程控制安装日记

VNC简介

网络遥控技术是指由一部计算机(主控端)去控制另一部计算机(被控端),而且当主控端在控制端时,就如同用户亲自坐在被控端前操作一样,可以执行被控端的应用程序,及使用被控端的系统资源。

VNC(Virtual Network Computing)是一套由AT&T实验室所开发的可操控远程的计算机的软件,其采用了GPL授权条款,任何人都可免费取得该软件。VNC软件主要由两个部分组成:VNC server及VNC viewer。用户需先将VNC server安装在被控端的计算机上后,才能在主控端执行VNC viewer控制被控端。

(在windows中也由一套著名的网络遥控软件――Symantec公司推出的pcAnywhere。

VNC server与VNC viewer支持多种操作系统,如Unix系列(Unix,Linux,Solaris等),windows及MacOS,因此可将VNC server 及VNC viewer分别安装在不同的操作系统中进行控制。如果目前操作的主控端计算机没有安装VNC viewer,也可以通过一般的网页浏览器来控制被控端。

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

////////////************************/////////////////

////////////************************/////////////////

                VNCserver使用

////////////************************/////////////////

////////////************************/////////////////

  在Linux上启动VNC Server , 执行命令service vncserver start

[root@linux root]# vncserver :1/////////一个序号///////(第一个运行设置一个密码)       vncserver <display>

  You will require a password to access your desktops.

  Password: ***** 为了不想任何人都可以任意操控此计算机。因此当第 1次启动VNC server时,会要求设置网络操控的密码。

  Verify: *****

  New ‘X’ desktop is linux:1 ////////////----一定要记住这一行稍后会用到,终端编号;

  Creating default startup script. /root/.vnc/xstartup

  Starting applications specified in /root/.vnc/xstartup

  Log file is /root/.vnc/linux:1.log

  ///////////////////////////////////注意: vncpasswd 可以更改这个密码,或者添加密码

  把vnc客户端 程序安装好

  ---客户端连接---

  在Microsoft Windows上运行VNC Viewer

  直接运行“vncviewer.exe”,系统会出现”Connection details”对话框。

  在“Connection details”对话框中的“VNC server”文本框中输入VNC Server的IP地址(或主机名及显示装置编号,(请看3。在Linux上启动VNC server的这一行,New ‘X’ desktop is linux:1 得到此信息),例如:192.168.0.1:1(冒号后面的1是执行VNC Server生成的显示装置编号),单击“OK”按钮后,VNC Server即会开始检查所输入的信息,若是信息错误,系统会出现“Failed to connect to server”的错误信息:若是信息正确,则会接着出现“VNC Authentication”对话框。

  若是在“VNC Authentication”对话框中输入的密码正确,就可以成功地打开Linux的桌面窗口。

  从浏览器远程遥控。

  启动VNC Server 后直接打开浏览器,在地址栏中输入被控端的网址或IP地址,并在网址后加上“:5800+显示编号”的端口号即可操控该计算机。

  例如:http://192.168.1.118.:5801(如果显示编号为1,一般第一次设置的显示编号都是1,就用5800+1=5801。)

VNC(Virtual Network Computing)虚拟网络计算工具,本质上来说是一个远程显示系统,管理员通过它不仅仅可以在运行程序的本地机上察看桌面环境,而且可以从 Internet上的任何地方察看远程机器的运行情况,而且它具有跨平台的特性。 Linux 要使用远程桌面需要安装VNC,好在Red Hat Enterprise Linux AS 5.0 已经自带了VNC,默认也已经安装了,只要配置一下就可以了。但是Windows客户端还是要安装的。


VNCServer 配置:

1. 启动 VNC Server: 打开终端执行:vncserver

2. 默认情况下VNC Viewer只能看到 VNC Server的命令行。
要VNC Viewer上可以看到Linux桌面需要做如下设置: 在VNC Viewer所在的机器上,
------------------------图形化连接设置方法一 /--------------------------------
取消/root/.vnc/xstartup文件中下面两行的注释即可:
unset SESSION_MANAGER exec
/etc/X11/xinit/xinitrc

或:
------------------------图形化连接设置方法二 /--------------------------------

vncserver默认使用的窗口管理器是twm,这是一个很简陋的窗口管理器,你可以把你的桌面改成GNOME或KDE。
vi /home/用户名/.vnc/xstartup

  你可以把像上面这样把"twm &"这一行注释掉,然后在下面加入一行"gnome-session &",或者是"startkde &",分别启动GNOME桌面和KDE桌面。

------------------------------------------------------------------------------

3. Linux启动后自动运行VNCServer

1) 在 系统设置>服务器设置>服务 中把 vncserver 打勾。

2) 打开配置文件/etc/sysconfig/vncservers,去掉下面这行的注释, ////////////////////图形化连接设置
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 800x600"
(这里注意一下,默认系统配置里有 –nolisten tcp 和 –nohttpd ,
这两个是阻止Xwindows登陆和HTTP方式VNC登陆的,如果需要图形界面,那就删除这部分。)
1表示VNC以桌面1运行,这样可以启动root的桌面。

---------------------------多用户设置示例-----------------------------------
VNCSERVERS="1:user1 2:user2 3:user3"               //序号也是和前面对应的
VNCSERVERARGS[1]="-geometry 1024x768"
VNCSERVERARGS[2]="-geometry 1024x768"
VNCSERVERARGS[3]="-geometry 800x600"
------------------------------------------------------------------------

4. VNC端口 如果需要从外网控制内网的某台Linux,则需要打开防火墙相应的端口,并在路由器上进行端口映射。 VNC给浏览器的端口是5800+N,给vncviewer的端口是5900+N,N是设置的display号

---------------------Windows 客户端连接---------------------------------

Windows 客户端 VNC Viewer 的配置: 1. 从http://www.realvnc.com/download.html下载
VNC Free Edition for Windows Version 4.1.2 2. 打开 VNCViewer : 填入VNCServer 的IP:编号(1或2或...) 3. VNCViewer 切换全屏模式:F8


=================================防火墙设置=================================
vi /etc/sysconfig/iptables

  找到下面的语句:

  -A RH-Firewall-1-INPUT -j REJECT ——reject-with icmp-host-prohibited

  在此行之前,加上下面的内容:

  -A RH-Firewall-1-INPUT -m state ——state NEW -m tcp -p tcp ——dport 5900:5903 -j ACCEPT

  这句话的含义是,允许其它机器访问本机的5900到5903端口,这样,display:1, display:2, display:3的用户就可以连接到本机。

  然后使用root身份重新启动防火墙:

  /sbin/service iptables restart
=============================================================================

 

 

1.确认VNC是否安装

默认情况下,Red Hat Enterprise Linux安装程序会将VNC服务安装在系统上。

确认是否已经安装VNC服务及查看安装的VNC版本

[root@testdb ~]# rpm -q vnc-server

vnc-server-4.1.2-9.el5

[root@testdb ~]#

若系统没有安装,可以到操作系统安装盘的Server目录下找到VNC服务的RPM安装包vnc-server-4.1.2-9.el5.x86_64.rpm,安装命令如下

rpm -ivh /mnt/Server/vnc-server-4.1.2-9.el5.x86_64.rpm

2.启动VNC服务

使用vncserver命令启动VNC服务,命令格式为“vncserver :桌面号”,其中“桌面号”用“数字”的方式表示,每个用户连个需要占用1个桌面

启动编号为1的桌面示例如下

[root@testdb ~]# vncserver :1

You will require a password to access your desktops.

Password:

Verify:

xauth:  creating new authority file /root/.Xauthority

New 'testdb:1 (root)' desktop is testdb:1

Creating default startup script. /root/.vnc/xstartup

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/testdb:1.log

以上命令执行的过程中,因为是第一次执行,需要输入密码,这个密码被加密保存在用户主目录下的.vnc子目录(/root/.vnc/passwd)中;同时在用户主目录下的.vnc子目录中为用户自动建立 xstartup配置文件(/root/.vnc/xstartup),在每次启动VND服务时,都会读取该文件中的配置信息。

BTW:/root/.vnc/目录下还有一个“testdb:1.pid”文件,这个文件记录着启动VNC后对应后天操作系统的进程号,用于停止VNC服务时准确定位进程号。

3.VNC服务使用的端口号与桌面号的关系

VNC服务使用的端口号与桌面号相关,VNC使用TCP端口从5900开始,对应关系如下

桌面号为“1”  ---- 端口号为5901

桌面号为“2”  ---- 端口号为5902

桌面号为“3”  ---- 端口号为5903

……

基于Java的VNC客户程序Web服务TCP端口从5800开始,也是与桌面号相关,对应关系如下

桌面号为“1”  ---- 端口号为5801

桌面号为“2”  ---- 端口号为5802

桌面号为“3”  ---- 端口号为5803

……

基于上面的介绍,如果Linux开启了防火墙功能,就需要手工开启相应的端口,以开启桌面号为“1”相应的端口为例,命令如下

[root@testdb ~]# iptables -I INPUT -p tcp --dport 5901 -j ACCEPT

[root@testdb ~]# iptables -I INPUT -p tcp --dport 5801 -j ACCEPT

4.测试VNC服务

第一种方法是使用VNC Viewer软件登陆测试,操作流程如下

启动VNC Viewer软件 --> Server输入“144.194.192.183:1” --> 点击“OK” --> Password输入登陆密码 --> 点击“OK”登陆到X-Window图形桌面环境 --> 测试成功

第二种方法是使用Web浏览器(如Firefox,IE,Safari)登陆测试,操作流程如下

地址栏输入 http://144.194.192.183:5801/ --> 出现VNC viewer for Java(此工具是使用Java编写的VNC客户端程序)界面,同时跳出VNC viewer对话框,在Server处输入“144.194.192.183:1”点击“OK” --> Password输入登陆密码 --> 点击“OK”登陆到X-Window图形桌面环境 --> 测试成功

(注:VNC viewer for Java需要JRE支持,如果页面无法显示,表示没有安装JRE,可以到http://java.sun.com/javase/downloads/index_jdk5.jsp这里下载最新的JRE进行安装)

5.配置VNC图形桌面环境为KDE或GNOME桌面环境

如果您是按照我的上面方法进行的配置的,登陆到桌面后效果是非常简单的,只有一个Shell可供使用,这是为什么呢?怎么才能看到可爱并且美丽的KDE或GNOME桌面环境呢?回答如下

之所以那么的难看,是因为VNC服务默认使用的是twm图形桌面环境的,可以在VNC的配置文件xstartup中对其进行修改,先看一下这个配置文件

[root@testdb ~]# cat /root/.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 &

将这个xstartup文件的最后一行修改为“startkde &”,再重新启动vncserver服务后就可以登陆到KDE桌面环境

将这个xstartup文件的最后一行修改为“gnome-session &”,再重新启动vncserver服务后就可以登陆到GNOME桌面环境

重新启动vncserver服务的方法:

[root@testdb ~]# vncserver -kill :1

[root@testdb ~]# vncserver :1

6.配置多个桌面

可以使用如下的方法启动多个桌面的VNC

vncserver :1

vncserver :2

vncserver :3

……

但是这种手工启动的方法在服务器重新启动之后将失效,因此,下面介绍如何让系统自动管理多个桌面的VNC,方法是将需要自动管理的信息添加到/etc/sysconfig/vncservers配置文件中,先以桌面1为root用户桌面2为oracle用户为例进行配置如下:

格式为:VNCSERVERS="桌面号:使用的用户名 桌面号:使用的用户名"

[root@testdb ~]# vi /etc/sysconfig/vncservers

VNCSERVERS="1:root 2:oracle"

VNCSERVERARGS[1]="-geometry 1024x768"

VNCSERVERARGS[2]="-geometry 1024x768"

7.修改VNC访问的密码

使用命令vncpasswd对不同用户的VNC的密码进行修改,一定要注意,如果配置了不同用户的VNC需要分别到各自用户中进行修改,例如在我的这个实验中,root用户和oracle用户需要分别修改,修改过程如下:

[root@testdb ~]# vncpasswd

Password:

Verify:

[root@testdb ~]#

8.启动和停止VNC服务

1)启动VNC服务命令

[root@testdb ~]# /etc/init.d/vncserver start

Starting VNC server: 1:root

New 'testdb:1 (root)' desktop is testdb:1

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/testdb:1.log

2:oracle

New 'testdb:2 (oracle)' desktop is testdb:2

Starting applications specified in /home/oracle/.vnc/xstartup

Log file is /home/oracle/.vnc/testdb:2.log

                                                           [  OK  ]

2)停止VNC服务命令

[root@testdb ~]# /etc/init.d/vncserver stop

Shutting down VNC server: 1:root 2:oracle                  [  OK  ]

3)重新启动VNC服务命令

[root@testdb ~]# /etc/init.d/vncserver restart

Shutting down VNC server: 1:root 2:oracle                  [  OK  ]

Starting VNC server: 1:root

New 'testdb:1 (root)' desktop is testdb:1

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/testdb:1.log

2:oracle

New 'testdb:2 (oracle)' desktop is testdb:2

Starting applications specified in /home/oracle/.vnc/xstartup

Log file is /home/oracle/.vnc/testdb:2.log

                                                           [  OK  ]

4)设置VNC服务随系统启动自动加载

第一种方法:使用“ntsysv”命令启动图形化服务配置程序,在vncserver服务前加上星号,点击确定,配置完成。

第二种方法:使用“chkconfig”在命令行模式下进行操作,命令使用如下(预知chkconfig详细使用方法请自助式man一下)

[root@testdb ~]# chkconfig vncserver on

[root@testdb ~]# chkconfig --list vncserver

vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off

终于写完了,好累,休息,休息一下~~~~~~

-- The End --

(责任编辑:IT)
------分隔线----------------------------