关于在Linux系统中配置VNC Server的方法,网上有很多的教程或者文章,但应用在我们的环境中时都不能完整解决我们的问题,所以这里我将在RedHat 6.0中配置VNC Server中的方法,以及可能遇到问题的解决办法总结在这里,供大家参考。
相关阅读:
VNC的安装配置 http://www.linuxidc.com/Linux/2013-05/84941.htm
CentOS 6.3安装和配置VNC http://www.linuxidc.com/Linux/2013-05/84668.htm
Linux下强制不检测依赖安装VNC http://www.linuxidc.com/Linux/2013-05/84075.htm
CentOS6 VNC服务安装配置 http://www.linuxidc.com/Linux/2013-04/82510.htm
VNC远程控制安装和设置 http://www.linuxidc.com/Linux/2013-01/77769.htm
Windows远程桌面访问Ubuntu 12.04 之安装VNC http://www.linuxidc.com/Linux/2012-07/64801.htm
1、 查询系统是否安装vnc-server
[root@localhost ~]# rpm –qa | grep vnc
如果有返回值,类似于vnc-server-的值,说明已经安装了vnc-server
2、 安装vnc-server
网上大都搜到的方法是输入
[root@localhost ~]# yum install tigervnc-server
但是在我们的环境中执行时却提示:No package tigervnc-server available.
所以只能采用另一种办法,就是先执行
[root@localhost ~]# yum search vnc
在返回结果中找到可用的包,再相应执行对应的包即可。
[root@localhost ~]# yum install vnc-server
3、 配置vnc-server的配置文件
输入
[root@localhost ~]# vi /etc/sysconfig/vncservers
内容如下:
# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the lines below to start a VNC server on display :2
# 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/archive/vnc/sshvnc.html>.
# Use “-nolisten tcp” to prevent X connections to your VNC server via TCP.
# Use “-nohttpd” to prevent web-based VNC clients connecting.
# Use “-localhost” to prevent remote VNC clients connecting except when
# doing so through a secure tunnel. See the “-via” option in the
# `man vncviewer’ manual page.
# VNCSERVERS=”2:myusername”
# VNCSERVERARGS[2]=”-geometry 800×600 -nolisten tcp -nohttpd -localhost”
按照注释的说明就可以知道该如何配置了。
在文件最后加上
VNCSERVERS=”1:root”
这样即完成了root用户的配置,VNCSERVERARGS参数这一行可以不进行设置。
这里有两点要注意:
1)VNCSERVERS=后面可以支持多用户,以空格隔开。如:
VNCSERVERS=”1:myusername 15:otheruser”—>这里的1 和15是端口号,用于连接时的端口
2)VNCSERVERARGS后面的[]里面的数据要与VNCSERVERS后面对应用户的值要一致。
VNCSERVERARGS基本参数有:
-geometry 桌面大小,缺省是1024×768
-nohttpd 不监听HTTP端口
-nolisten tcp 不监听X端口
-localhost 只允许从本机访问
-AlwaysShared 默认的, 同时只能有一个vncviewer连接(跟客户端配置也有关), 一旦第2个连上去, 第1个就被断开了. 此参数允许同时连多个vncviewer
-SecurityTypes None登录不需要密码认证 VncAuth默认值,要密码认证
4、 设定VNC连接密码
上一步配置好配置文件之后,我们要用vncpasswd来设置vnc连接时候的认证密码。
[root@localhost ~]# vncpasswd
Password:
Verify:
注意,这里的vncpass只能在vnc本用户下面来运行。比如要是想配置用户名为Oracle的vnc认证密码,需要先切换到oracle用户,之后再运行vncpasswd命令。
[root@localhost ~]# su – oracle
[oracle@localhost ~]$ vncpasswd
Password:
Verify:
5、 启动vncserver
以上介绍了VNC Server的安装以及配置过程,下面介绍对该服务的常规管理方法。
[root@localhost ~]# service vncserver start
Starting VNC server: 1:root
New ‘localhost.localdomain:1 (root)’ desktop is localhost.localdomain:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log
[ OK ]
关闭该服务的命令为
[root@localhost ~]# service vncserver stop
也可以通过以下命令查看vncserver的运行状态
[root@localhost ~]# service vncserver status
这里,将vncserver设置为开机默认启动。
[root@localhost ~]# chkconfig vncserver on
6、 防火墙配置
尽管以上过程已经完成,并且vncserver服务也启动,但却还是连不上,这时,可能的原因就是该请求被防火墙屏蔽了。所以这里介绍下防火墙的配置方法。
vnc服务运行时,使用netstat -antpl查看可以发现有三个端口在监听。
5901 5801 6001
默认的,vnc 服务监听3个TCP端口
RFB(Remote FrameBuffer)协议 默认端口:5900+显示器号
HTTP协议默认端口:5800+显示器号
X协议 默认端口:6000+显示器号
vncserver使用的显示器编号默认从1开始,依次使用,也可以参数指定端口号。
因为我们需要建立远程连接,所以只需要RFB协议就可以了。
下面介绍配置防火墙的过程。
[root@localhost ~]# vi /etc/sysconfig/iptables
文件内容为
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
按照/etc/sysconfig/vncservers文件中的配置,我们需要打开5901的端口号,只需在
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
下面加入一行
-A INPUT -m state –state NEW -m tcp -p tcp –dport 5901 -j ACCEPT
即开启了5901的端口。
当使用VNC-Viewer进行连接时,
192.168.10.131:1——这里的:1就是端口号,指的是5900+1,这个1是在/etc/sysconfig/vncservers里面指定的,这个数字在100以下,不含100的时候可以直接用192.168.10.131:1来表示,如果在vncservers里面指定的数值大于100 包含100的时候,在连接的时候就需要用到完整的端口数值。如:在vncservers里面指定的是100,那么在连接的时候就应该是这样的:192.168.10.131:6000
vnc里面默认是以5900这个端口为基础的,这个应该是可以更改的,不过得改源代码。
7、 配置VNC图形桌面环境为KDE或GNOME桌面环境
有人可能遇到这种情况,vnc都配置完毕并且正常运行,但是用VNC-Viewer登录后显示的屏幕却为灰色(也有黑色的),并且无法进行任何操作,这是什么原因呢。(遇上了是你的不幸,需要好好阅读下面的内容并进行配置。没遇上你也别幸灾乐祸,搞清楚原理,有备无患。)
原来VNC xstartup程序中默认的设定值是启动twm,而不是GNOME或KDE。
所以需要对xstart文件做小小的修改,
[root@localhost ~]# 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 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
twm &
我在设置时是将最后两行注释掉并且加上
gnome-session &
之后再重启vncserver
[root@localhost ~]# service vncserver restart
再次登录VNC-Viewer,出现了可爱的RedHat桌面,成功解决灰屏问题。
以上是个人在Redhat 6.0中配置VNC Server的过程,希望能减少大家在做此类配置时的麻烦。有问题之处还请指出,谢谢。
更多RedHat相关信息见RedHat 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=10