远程桌 面访问之VNC与Linux联接指南
转自:http://www.cnblogs.com/hicome/archive/2009/05/13/1455755.html
Posted on 2009-05-13 11:22 Hicome 阅读(254) 评 论(0) 编 辑 收藏 所属分类: Linux 手记
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研发的,他的源代码是开源的。
下面简单介绍一下怎样利用VNC在Window client(Windows 2000 ) 上访问远程Linux server(Fedora 6 ).
首先需要配置VNC密码,密码在使用客户端连接服务器时使用。
注意:VNC密码保存在用户的主目录中(/home/xxx),每个用户都能够配置自己的密码。因此,请使用您的用户名(尽量不要使用root)运行下列 命令:
vncpasswd
然后输入密码。
接下来就能够启动VNC server了。在启动VNC server时,需要为您的server指定一个display参数。您能够把display理解为一个桌面,每个用户都能够有自己的桌面。VNC客户端 在连接时,能够指定连接到哪个桌面上。在系统中,display号不能重复,也就是说,假如有用户已建立了名为“:1”的display,另外一个用户就 不能再使用“:1”了,他能够使用“:2”。
启动VNC server的命令是:
vncserver
例如,
vncserver :1
因为在Fedora 6中display “:0” 已被用掉,所以从”:1”开始
最后,需要配置一下防火墙,允许VNC客户端连接VNC server。VNC server监听的端口从5900开始,display :1的监听5901,display :2监听5902,以此类推。Fedora 6的防火墙缺省是不允许连接这些端口的,所以需要使用下面的步骤打开防火墙(需要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客户端,我建议一个OpenSource 的UltraVNC, 在能够去
www.sourceforge.net
下载。
假设VNC server的IP地址是192.168.1.1,display是:1。在VNC viewer的VNC server栏中输入:“192.168.1.1:1”,然后连接。OK,您能够看到自己的桌面了。以后不管您什么时候关闭自己的本地PC机都不怕了,只 要server不关机,您只要连接到VNC server,您就能够看到您前一天关闭本地PC机时的桌面还保持着原样。
但是...这个桌面太丑了!
原来vncserver默认使用的窗口管理器是twm,这是个很简陋的窗口管理器,您能够把您的桌面改成GNOME或KDE。
方法是,进入您自己的home目录,然后编辑这个文档:.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
#
URL:http://www.uk.research.att.com/vnc/sshvnc.html
.
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启动会失败!