Thursday, May 14, 2009

在Fedora Core 10上构建VNC服务

通过VNC服务可以方便的规划和利用过剩的计算机计算能力。因为前一段时间遇到了需要10台PC同时运行测试数据而且分布在不同的楼层的情况,所以感受颇深!10台计算机要用matlab在几万张照片上运行某个算法,而且需要一定的手动干预和记录数据,如果派人在计算机旁边盯着的话,肯定是不现实的(虽然我们就是这样弄的)!
这几天因为在局域网内构建了一个以一台高性能服务器为中心,数台标准PC使用其服务的VNC系统,所以将一些配置方法记录下来。



1.查看VNC是否已经安装:
在终端输入:
[root@hanyu ~]#rpm -q vnc vnc-server
看是否有如下返回值
vnc-4.1.2-24.fc8
vnc-server-4.1.2-24.fc8
如果没有安装VNC,可以以管理员身份输入:

[root@hanyu ~]#
yum install vnc vnc-server
安装VNC浏览器和服务器

2.在终端运行:
[root@hanyu ~]#service vncserver start
[root@hanyu ~]#vncpasswd
设置登录密码,此时会提示输入密码,并确认一遍,此密码是你在客户端登录时需要的密码,以后可以通过vncpasswd命令修改

3.在终端修改server的配置文件
[root@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:hanyu"
#这个选项为配置开机自动启动vncserver,可以是多个
# VNCSERVERARGS[1]="-geometry 800x600"
VNCSERVERARGS[1]=”-geometry 800×600 -alwaysshared -depth 24″
#-alwaysshared代表允许多用户同时登录 -depth代为色深,参数有8,16,24,32。

保存后重新启动VNC server
[root@hanyu ~]# service vncserver restart

需要多用户连接时,配置vncserver给多用户使用。在/etc/sysconfig/vncservers中最后行设置如下:
VNCSERVERS="1:root 2:hanyu"
参考上文,你要为两个用户分别运行vncpasswd来设置口令. 并且在你的防火墙修改中,VNC使用端口5901给连接1用,5902给2用等等,以此类推(见防火墙配置)。


4.有些用户可能还需要配置防火墙,可按如下方法配置
[root@hanyu ~]#vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type any -j ACCEPT
-A INPUT -p 50 -j ACCEPT
-A INPUT -p 51 -j ACCEPT
-A INPUT -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT
-A INPUT -p udp -m udp --dport 631 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 21 --state NEW -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 22 --state NEW -j ACCEPT
-A INPUT -p udp -m state -m udp --dport 137 --state NEW -j ACCEPT
-A INPUT -p udp -m state -m udp --dport 138 --state NEW -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 139 --state NEW -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 445 --state NEW -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 80 --state NEW -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 443 --state NEW -j ACCEPT
# web10000
-A INPUT -p tcp -m tcp -m state --dport 10000 --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp -m state --dport 631 --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp -m state --dport 5900:5910 --state NEW -j ACCEPT
#上面的端口就是vnc server使用的,从5900开始,一号屏(即上面的root)用5901,如有其它用户,依次递增
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
保存重启iptables.
[root@hanyu ~]#service iptables restart
防火墙的配置是参照网上的一些配置做的,但还是有问题,所以我直接关掉了防火墙

5. VNC server会在用户的目录下生成一些配置文件,以我的配置为例:
[root@hanyu ~]#cd /home/hanyu/.vnc
编辑这个名为xstartup的脚本,注意到下面红色的部分的注释,将这两行标记成 红色的内容前面的注释符号去掉(其它的不管),否则你将只能得到一个什么都没有的灰屏。

#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc


完成以上步骤,我的计算机已经可以访问服务器的VNC服务了!如果有问题可以联系我或者自己搜索解决方法!Enjoy...

No comments:

Post a Comment