VNC配置整理
1. 确认VNC是否安装
默认情况下,Red Hat Enterprise Linux安装程序会将VNC服务安装在系统上。
确认是否已经安装VNC服务及查看安装的VNC版本
[root@smsdb01 .vnc]# rpm -qa vnc-server
vnc-server-4.1.2-14.el5_5.4
若系统没有安装,可以到操作系统安装盘的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
如果Linux开启了防火墙功能,就需要手工开启相应的端口,以开启桌面号为“1”相应的端口为例,命令如下
[root@testdb ~]# iptables -I INPUT -p tcp --dport 5901 -j ACCEPT
[root@testdb ~]# iptables -I INPUT -p tcp --dport 5902 -j ACCEPT
测试VNC服务
方法是使用VNC Viewer软件登陆测试,操作流程如下
启动VNC Viewer软件 --> Server输入“服务器IP:桌面号” --> 点击“OK” --> Password输入登陆密码 --> 点击“OK”登陆到X-Window图形桌面环境 --> 测试成功
4. 配置VNC图形桌面环境为KDE或GNOME桌面环境
VNC服务默认使用的是twm图形桌面环境的,可以在VNC的配置文件xstartup中对其进行修改成KDE或GNOME桌面环境,这样的配置涉及到以下几个配置文件
a./etc/sysconfig/vncservers -- 在这个配置文件中配置桌面对应的用户,及相关的分辨率
b./home/user_home/.vnc/xstarup -- user_home是用户的主目录,需要根据用户的具体需要进行,在这个配置文件中主要是选择何种桌面环境
下面以kde桌面环境为例配置多个桌面(这里以1024x768进行配置,默认配置就是)
注意:红色字体是需要进行配置
[root@smsdb01 .vnc]# vi /etc/sysconfig/vncservers
VNCSERVERS="1:root 2:tux"
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared -depth 24"
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared -depth 24"
[root@smsdb01 .vnc]# pwd
/home/tux/.vnc
[root@smsdb01 .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
配置完成重启vncserver
Service vncserver restart,然后用vncviewer 进行登录测试
1. 修改VNC访问的密码
使用命令vncpasswd对不同用户的VNC的密码进行修改,一定要注意,如果配置了不同用户的VNC需要分别到各自用户中进行修改,例如在我的这个实验中,root用户和tux用户需要分别修改,修改过程如下:
[root@smsdb01 .vnc]# vncpasswd
Password:
Verify:
[root@smsdb01 .vnc]#
2. 修改分辨率方法
方法1:
通过vncserver 命令实现,不过这种方法会新生成一个桌面环境,会产生一个新的进程
[root@smsdb01 .vnc]# man vncserver
-geometry widthxheight
Specify the size of the desktop to be created. Default is 1024x768.
默认的分辨率是1024x768,我们可以使用这个参数对分辨率进行调整。
例如,我们需要将分辨率调整到800x600
[root@smsdb01 .vnc]# vncserver -geometry 800x600
Warning: smsdb01.scn.com:4 is taken because of /tmp/.X4-lock
Remove this file if there is no X server smsdb01.scn.com:4
New 'smsdb01.scn.com:5 (root)' desktop is smsdb01.scn.com:5
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/smsdb01.scn.com:5.log
方法2:
修改vncservers配置文件
[root@smsdb01 .vnc]# vncserver -geometry 800x600
VNCSERVERS="1:root 2:tux"
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared -depth 24"
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared -depth 24"
-alwaysshared代表允许多用户同时登录 -depth代为色深,参数有8,16,24,32。
两种修改方法各有利弊,请根据具体环境进行调整。使用第一种方法操作简单,影响范围小,因为该方法是通过单独启动vnc进程来提供服务的,但是容易在系统中遗留过多的vnc进程;第二种方法是通过调整VNC默认分辨率的手段实现的,实现集中管理,但存在因分辨率调整过高导致客户端无法使用的问题。
3. VNC相关问题
a. 查看vnc进程及端口
[root@smsdb01 .vnc]# ps -ef|grep Xvnc
root 3987 1 0 14:34 pts/5 00:00:05 Xvnc :1 -desktop smsdb01.scn.com:1 (root) -httpd /usr/share/vnc/classes -auth /root/.Xauthority -geometry 1024x768 -depth 24 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -pn -alwaysshared
tux 4066 1 0 14:34 ? 00:00:12 Xvnc :2 -desktop smsdb01.scn.com:2 (tux) -httpd /usr/share/vnc/classes -auth /home/tux/.Xauthority -geometry 1024x768 -depth 24 -rfbwait 30000 -rfbauth /home/tux/.vnc/passwd -rfbport 5902 -pn -alwaysshared
root 5336 1 0 20:20 pts/5 00:00:01 Xvnc :5 -desktop smsdb01.scn.com:5 (root) -httpd /usr/share/vnc/classes -auth /root/.Xauthority -geometry 800x600 -depth 16 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5905 -pn
root 5544 30732 0 20:31 pts/5 00:00:00 grep Xvnc
b.查看进程文件
/home/tux/.vnc
[root@smsdb01 .vnc]# ls -al
总计 28
drwxr-xr-x 2 tux tux 4096 02-21 20:14 .
drwx------ 20 tux tux 4096 02-21 14:35 ..
-rw------- 1 tux tux 8 02-21 12:55 passwd
-rw-rw-r-- 1 tux tux 3059 02-21 18:44 smsdb01.scn.com:2.log
-rw-rw-r-- 1 tux tux 5 02-21 14:34 smsdb01.scn.com:2.pid
-rwxr-xr-x 1 tux tux 443 02-21 14:34 xstartup
[root@smsdb01 .vnc]# more smsdb01.scn.com:2.pid
4066
[root@smsdb01 .vnc]# more /home/tux/.vnc/smsdb01.scn.com:2.pid
4066
我们使用的vncserver –kill :2 就是找到这个pid文件然后根据这个进行kill进程的。
b. 桌面启动失败
这个一般是由于我们之前己经启动,但没有正关掉所致,这样在临时文件下有相关的锁文件,如果这个文件存在,服务器则认为存在则会报错。所以必须手动进行删除这些文件
1.删除tmp下文件以.X开头的文件,
[root@smsdb01 .vnc]# cd /tmp
[root@smsdb01 tmp]# ls -al|grep lock
-rw-r--r-- 1 root root 5 02-21 20:20 scim-bridge-0.3.0.lockfile-0@localhost:5.0
-rw-rw-r-- 1 tux tux 6 02-21 19:59 scim-bridge-0.3.0.lockfile-500@localhost:0.0
-rw-rw-r-- 1 tux tux 5 02-21 20:10 scim-bridge-0.3.0.lockfile-500@localhost:2.0
-r--r--r-- 1 root root 11 02-21 13:12 .X0-lock
-r--r--r-- 1 root root 11 02-21 14:34 .X1-lock
-r--r--r-- 1 tux tux 11 02-21 14:34 .X2-lock
-r--r--r-- 1 root root 11 02-21 13:26 .X3-lock
-r--r--r-- 1 root root 11 02-21 13:35 .X4-lock
-r--r--r-- 1 root root 11 02-21 20:20 .X5-lock
2. .X11-unix对应桌面文件
[root@smsdb01 tmp]# cd .X11-unix/
[root@smsdb01 .X11-unix]# ls -al
总计 12
drwxrwxrwt 2 root root 4096 02-21 20:20 .
drwxrwxrwt 21 root root 4096 02-21 20:20 ..
srwxrwxrwx 1 root root 0 02-21 13:12 X0
srwxrwxrwx 1 root root 0 02-21 14:34 X1
srwxrwxrwx 1 tux tux 0 02-21 14:34 X2
srwxrwxrwx 1 root root 0 02-21 13:26 X3
srwxrwxrwx 1 root root 0 02-21 13:35 X4
srwxrwxrwx 1 root root 0 02-21 20:20 X5
这样操作完成,重新启vncserver就可以启动桌了