Chinaunix首页 | 论坛 | 博客
  • 博客访问: 328111
  • 博文数量: 104
  • 博客积分: 2815
  • 博客等级: 少校
  • 技术积分: 595
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 16:32
文章分类

全部博文(104)

文章存档

2013年(1)

2012年(2)

2011年(21)

2010年(80)

我的朋友

分类: 系统运维

2010-07-20 15:53:42

VNC,全称为Virtual Network Computing,它是一个桌面共享系统。它的功能,类似于windows中的远程桌面功能。VNC使用了RFB(Remote FrameBuffer,远程帧缓冲)协议来实现远程控制另外一台计算机。它把键盘、鼠标动作发送到远程计算机,并把远程计算机的屏幕发回到本地。
VNC技术与平台无关,VNC Viewer可以和VNC Server在不同的操作系统上。VNC几乎支持所有的操作系统,也支持Java,甚至可以通过支持Java的浏览器来访问VNC Server。多个VNC客户端可以同时连接到一个VNC Server上。
VNC最初由AT&T开发的,它的源代码是开源的。

 
    在CentOs 4.3上配置VNC服务很简单(这里假定你的计算机上已经安装了VNC软件)

     首先需要配置VNC密码,密码在使用客户端连接服务器时使用。
注意:VNC密码保存在用户的主目录中,每个用户都可以设置自己的密码。因此,请使用你的用户名(尽量不要使用 root)运行下列命令:
vncpasswd


然后输入密码。

     接下来就可以启动VNC server了。在启动VNC server时,需要为你的server指定一个display参数。你可以把display理解为一个桌面,每个用户都可以有自己的桌面。VNC客户端 在连接时,可以指定连接到哪个桌面上。在系统中,display号不能重复,也就是说,如果有用户已经建立了名为“:1”的display,另外一个用户 就不能再使用“:1”了,他可以使用“:2”。
启动VNC server的命令是:
vncserver


例如,
vncserver :1


     最后,需要配置一下防火墙,允许VNC客户端连接VNC server。VNC server监听的端口从5900开始,display :1的监听5901,display :2监听5902,以此类推。CentOs的防火墙缺省是不允许连接这些端口的,所以需要使用下面的步骤打开防火墙(需要root权限):
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



     好了,现在就可以运行客户端软件,连接到VNC server上了。
VNC客户端软件很多,在linux下有vncviewer,KDE还提供了一个krdc(它的菜单项就是”Remote Desktop Connection",远程桌面连接)。
在window也有不少vnc客户端,你可以到

     假设VNC server的IP地址是192.168.1.1,display是:1。在VNC viewer的server栏中输入:“192.168.1.1:1”,然后连接。OK,你可以看到自己的桌面了。以后不管你什么时候关闭自己的本地PC 机都不怕了,只要server不关机,你只要连接到VNC server,你就可以看到你前一天关闭本地PC机时的桌面还保持着原样。

     不过...这个桌面怎么这么丑?!
     原来vncserver默认使用的窗口管理器是twm,这是一个很简陋的窗口管理器,你可以把你的桌面改成 GNOME或KDE。
     方法是,进入你自己的home目录,root则是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 &
gnome-session &


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

如果server重启了,那你就需要重新运行一次vncserver命令来启动VNC server,这很麻烦。有没有更好的方法呢?

有!我们可以把VNC server启动成后台服务。执行如下步骤:

首先要允许VNC server在系统启动过程中被启动。这可以通过“系统设置-->服务器设置-->服务”菜单来配置,把vncserver一项选上就可以 了。
如果使用命令行的话,以root身份运行以下两条命令:
cd /etc/rc5.d
mv K35vncserver S35vncserver


然后编辑/etc/sysconfig/vncservers,以下是文件内容:
# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the line below to start a VNC server on display :1
# as my 'myusername' (adjust this to your own).  You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted!  For a secure way of using VNC, see
# .

VNCSERVERS="1:user1 2:user2 3:user3"
VNCSERVERARGS[1]="-geometry 1024x768"
VNCSERVERARGS[2]="-geometry 1024x768"
VNCSERVERARGS[3]="-geometry 800x600"


解释一下这个文件:
VNCSERVERS这一行是配置在系统启动时启动几个VNC server,上面的例子里运行了三个VNC server,其中user1在display :1,user2在display :2,user3在display :3。
VNCSERVERARGS 这三行,分别为VNC server 1, 2, 3配置启动参数,上面的例子里对user1和user2使用屏幕分辨率1024x768,对user3使用800x600。
其它支持的参数请使用 “man vncserver”命令查询。

编辑好这个文件后,保存,然后以root身份运行:
/sbin/service vncserver start


这样user1, user2, user3的vncserver就启动了。
以后每次系统重启时,都会自动启动这三个用户的 vncserver。

注意:上面三个用户必须已经使用vncpasswd命令设置过vnc密码,不然他的vncserver启动会失败
------------------------------------------------------------------------------------------------

1. 检查vnc客户端和服务器是否已经安装:

 

[gavin@centos ~]$ rpm -q vnc vnc-server

package vnc is not installed

vnc-server-4.0-8.1

 

cent os 5已包含vnc的安装包

 

2. 将用户名称加入到配置文件:

(注:这里的“用户名”是指linux系统用户的名称)

[gavin@centos ~]# vi /etc/sysconfig/vncservers

#

# Uncomment the line below to start a VNC server on display :1

# as my 'myusername' (adjust this to your own). You will also

# need to set a VNC password; run 'man vncpasswd' to see how

# to do that.

#

# DO NOT RUN THIS SERVICE if your local area network is

# untrusted! For a secure way of using VNC, see

# >.

 

# VNCSERVERS="1:myusername"

 

# VNCSERVERS="1:gavin 2:john" # use the method for more user

VNCSERVERS="1:gavin 2:root 3:root"

 

# VNCSERVERARGS[1]="-geometry 800x600"

VNCSERVERARGS[1]="-geometry 1024x768"

VNCSERVERARGS[2]="-geometry 1024x768"

VNCSERVERARGS[3]="-geometry 1024x768"

 

3. 设置用户gavin的密码

[gavin@centos ~]$ vncpasswd

Password:

Verify:

 

4. 启动VNC服务

[gavin@centos ~]# /sbin/service vncserver start

Starting VNC server: 1:gavin             [ OK ] 

 

5. 输入命令

 

[gavin@centos ~]$ cd ~/.vnc/

[gavin@centos .vnc]$ vi 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" &

gnome-session & #set starting GNOME desktop

#startkde & #kde desktop

#twm & #Text interface

 

6. 重启vncserver

[gavin@centos ~]# /sbin/service vncserver restart

 

Shutting down VNC server: 1:gavin [ OK ]

Starting VNC server: 1:gavin             [ OK ] 

 

7. Windows登陆到VNC Server

(1).从IE登录

 

直接从IE浏览器中输入如下地址:

 

 

输入密码即可使用。

 

(2).从VNC view登录

 

在windows上安装vnc view,然后输入xxx.xxx.xxx.xxx:2, 连接登录,输入密码即可。

 

备注:如果从vnc view登录时,提示connection refused(10061),则是因为linux防火墙的问题,登录centos系统,选择 System-->Preferences-->Remote Desktop,勾选sharing中的两项,Security两项不勾,点击关闭,然后再重新用vnc view登录即可。



自己怎么改rc里相关文件都没有用,chkconfig vncserver on也不行,setup界面是打勾也没有用,init.d里修改vncserver文件为345级别也没有用,就是不能随机启动,vnc服务就是停,晕, 最后没办法只能在rc.local里加入service vncserver start,不知道什么原因

阅读(2414) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~