http://hi.baidu.com/wxf966/blog/item/301c95f4920aabfe7709d71c.html

 

 

vnc的默认端口是5901,这个说法是不对的。vnc并不是只有一个端口

先看看这个配置 
VNCSERVERS="1:oracle 2:root" 
VNCSERVERARGS[1]="-geometry 800x600 -nolisten tcp -nohttpd" 
...... 
这里是摘自/etc/sysconfig/vncservers里的一段。 这里就配置了2个桌面,一个桌面号是1, 一个是2.

vncserver在调用的时候,会根据你的配置来启用server端的监听端口, 从5900开始,加上你的桌面号,比如这里的oracle就是5901,root就是5902

这里可以修改桌面号来确定端口,如桌面好设为10000,那么端口就是15900.还可以修改vncserver启动命令来修改5900+为15900+

从vncserver这个启动命令开始吧, 

# which vncserver 
/usr/bin/vncserver

# file /usr/bin/vncserver 
/usr/bin/vncserver: a perl script text executable

#grep "59" /usr/bin/vncserver -n 
18:# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 
118:$vncPort = 5900 + $displayNumber; 
238:# n is taken if something is listening on the VNC server port (5900+n) or the 
257:# (5900+n) or the X server port (6000+n). 
274: if (!bind(S, pack('S n x12', $AF_INET, 5900 + $n))) {

这里启动的脚本hard code了5900,我们可以替换这里就OK了

先停止vnc服务,如果有连接的客户端,使用vncserver -kill :桌面号退出,然后替换118和274行的5900为15900,然后重启服务

# service vncserver restart

查看端口 
# netstat -l | grep 159 
tcp 0 0 *:15901 *:* LISTEN 
tcp 0 0 *:15902 *:* LISTEN

已经成功了。