Chinaunix首页 | 论坛 | 博客
  • 博客访问: 323919
  • 博文数量: 122
  • 博客积分: 1395
  • 博客等级: 中尉
  • 技术积分: 1340
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-03 20:40
个人简介

智者,既能奋发不休,又能尽人事,顺天命

文章分类

全部博文(122)

文章存档

2014年(39)

2013年(46)

2012年(12)

2011年(3)

2010年(20)

2009年(2)

我的朋友

分类: LINUX

2013-11-26 17:51:45

VNC 的缺点在于,RFB 身份验证基于密码,而不需要用户名。因此,每个用户必须启动一个独立的 VNC 服务器会话,并通过指定正确的端口号连接到 VNC 实例。详见《使用 VNC 实现多用户登录 》
通过XDMCP服务器来认证,可以使用系统帐号密码来登陆vnc,因此可以使用ldap集中管理,并且可以使用同一端口建立多个用户连接,各自使用不同的桌面。
各个桌面管理器都有自己的XDMCP,KDE使用kdm,GNOME使用gdm。顺便说一下,/etc/sysconfig/desktop中切换的不是桌面管理器,而是认证界面,即gdm还是kdm。而具体是哪个桌面可以在登陆界面再次选择,而且认证通过进入到桌面之后,gdm或kdm依然在运行,监听UDP端口177。desktop文件需要自己手工创建,内容如下

  1. DESKTOP="GNOME"
  2. DISPLAYMANAGER="GNOME"
需要先启动XDMCP,因此inittab中需要设置启动级别为5。

gdm设置XDMCP在/etc/gdm/custom.conf,注意,不能写成Enable=true,也不能写成enable。

  1. [xdmcp]
  2. Enable=1
kdm设置文件在/etc/kde/kdm/kdmrc

  1. [Xdmcp]
  2. Enable=true
设置好之后,从启X,查看UDP端口177是否在监听。

下面设置vnc,要想使用XDMCP,需要xinetd中转,创建/etc/xinetd.d/vnc

  1. service vnc
  2. {
  3.    disable = no
  4.    socket_type = stream
  5.    protocol = tcp
  6.    instances   = 1
  7.    wait = no
  8.    user = nobody
  9.    server = /usr/bin/Xvnc
  10.    server_args = -desktop myvnc -inetd -query localhost -once -SecurityTypes None -IdleTimeout 60
  11.    type = UNLISTED
  12.    port = 5900
  13. }

其中,query后面的localhost是指XDMCP服务器的地址,SecurityTypes None是指vnc不需要认证,否则的话,vnc需要认证一次,XDMCP再认证一次。
当wait值为no,xinetd则认为此服务是多线程,表现就是:每当有新客户端连接过来就启动一个Xvnc进程,一个客户端对应一个Xvnc进程,因此vnc中关于shared的设置在xinetd模式下没有实际意义。
当wait值为yes,xinetd则认为此服务是单线程,一个Xvnc进程服务所有的客户端。表现就是:第一次连接需要认证,但断开再连接或者再建立新连接就不需要认证,即可以同时建立多个连接,而服务端只有一个Xvnc进程。如果使用-NeverShared参数,则同时只能服务一个客户端连接,而且后来的连接会直接踢掉前面的连接(很不合理)。
如果每个服务器只允许一个vnc客户端连接,则需要instances值为1,这样,对同一个端口,xinetd值启动一个Xvnc进程,同时设置为nowait模式,第二个客户端连接时,由于无法启动第二个Xvnc而导致连接失败。
如果允许多个客户端连接,但每个端口只允许一个连接,则创建多个服务,如vnc1、vnc2,每个服务设置不同的端口。

vnc通过XDMCP认证,还有一个好处,就是可以查看当前是否有用户通过vnc登陆。正常使用vnc登陆,w命令不会显示。此种登陆在w命令中有特定显示,tty为空,运行命令是“pam: gdm-password”。而本地图形界面登陆的,tty是tty1,运行命令是Xorg。
阅读(2271) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~