vnc的默认端口是5901,这个说法是不对的。vnc并不是只有一个端口。
以前另一个文章介绍了nvcserver的配置用户的过程,里面提到了桌面号,这个桌面号就可以端口有密切关系
先看看这个配置
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
所以通过这里的桌面号也是可以达到我们的目的的,根据你的目标端口来设定用户的周面好,虽然可以解决,但是总是感觉有些没有拉干净的感觉,这不是 这次的研究内容,还是找个痛快的方式吧。
这次的研究主要就是颠覆这样的默认规则,直接的深入进去,我要直接修改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了
先定义一个$default_port=15900
然后替换118和274行的5900为$default_port就可以了
现在启动服务
# service vncserver restart
查看端口
# netstat -l | grep 159
tcp 0 0 *:15901 *:* LISTEN
tcp 0 0 *:15902 *:* LISTEN
======临时或者永久性配置多个桌面======
可以使用如下的方法启动多个桌面的VNC
vncserver :1
vncserver :2
vncserver :3
……
但是这种手工启动的方法在服务器重新启动之后将失效,因此,下面介绍如何让系统自动管理多个桌面的VNC,方法是将需要自动管理的信息添加到/etc/sysconfig/vncservers配置文件中,先以桌面1为root用户桌面2为oracle用户为例进行配置如下:
格式为:VNCSERVERS="桌面号:使用的用户名 桌面号:使用的用户名"
# vi /etc/sysconfig/vncservers
VNCSERVERS="1:root 2:oracle"
VNCSERVERARGS[1]="-geometry 1024x768"
VNCSERVERARGS[2]="-geometry 1024x768"
修改VNC访问的密码
使用命令vncpasswd对不同用户的VNC的密码进行修改,一定要注意,如果配置了不同用户的VNC需要分别到各自用户中进行修改,例如在我的这个实验中,root用户和oracle用户需要分别修改,修改过程如下:
# vncpasswd
Password:
Verify:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)