# GDM configuration storage
[daemon]
[security]
DisallowTCP=false
AllowRemoteRoot=true
[xdmcp]
Enable=true
DisplaysPerHost=5
Port=177
[greeter]
[chooser]
[debug]
2,启动gdm,在/etc/inittab中将runlevel设为 5,即:
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
也可以在shell中直接执行 “init 5” 来启用linux桌面(如果系统是采用init:3的方式启动的话)。
通过 lsof -i:177 命令,可以看到:
$ sudo lsof -i:177
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gdm-binar 2392 root 7u IPv4 13484 0t0 UDP *:xdmcp
表示已经成功启动。
1,在Xbrowser中新建一个XDMCP会话
2,按下图所示配置host,method等参数
即可通过新建的session来进行远程连接。
如果你够幸运,通过以上配置就可以远程控制Centos了,但是有的人未必这么幸运,比如我就遇到以下问题。
1,Xmanager连接不上,log如下:
Waiting for client connections ...
Xdmcp: received a WILLING message.
Xdmcp Request Address: 192.168.2.122
Xdmcp Connection Address 0: 192.168.45.112
Xdmcp: sent a REQUEST message.
Xdmcp: received a DECLINE message.
XDMCP fatal error: Session declined Maximum number of open sessions from your host reached
这是由于Xmanager 是经过router 来连接host的,session超出了host 允许的最大值,可以修改XDM的配置:DisplaysPerHost=5。
详细的请参考这篇文章:
===========================================================
Under Linux, this setting is in the /etc/X11/gdm/gdm.conf file and the /etc/kde/kdm/kdmrc file. Here’s the part of the file(s) you need to look at:
[xdmcp]
# Distributions: Ship with this off. It is never a safe thing to leave
# out on the net. Alternatively you can set up /etc/hosts.allow and
# /etc/hosts.deny to only allow say local access.
Enable=true
HonorIndirect=true
MaxPending=4
MaxPendingIndirect=4
MaxSessions=16
MaxWait=15
MaxWaitIndirect=15
DisplaysPerHost=2
Port=177
# Willing script, none is shipped and by default we'll send
# hostname system id
Willing=/etc/X11/gdm/Xwilling
Increasing DisplaysPerHost will allow more users to connect before this error happens.
/etc/X11/gdm/gdm.conf configures more host connections for Gnome.
/etc/kde/kdm/kdmrc file configures more host connections for KDE.
===========================================================
2,如果Xmanager在防火墙后面,那么可能连接超时,比如,xbrowser的log可能如下:
Xdmcp Request Address: 192.168.2.122
Xdmcp Connection Address 0: 192.168.6.152
Xdmcp: sent a REQUEST message
Xdmcp: received an ACCEPT message
Xdmcp: sent a MANAGE message.
Xdmcp: Timed out, state 8. Retransmissions: 0
Xdmcp: sent a MANAGE message.
Xdmcp: Timed out, state 8. Retransmissions: 1
Xdmcp: sent a MANAGE message.
Xdmcp: Timed out, state 8. Retransmissions: 2
Xdmcp: sent a MANAGE message.
Xdmcp: Timed out, state 8. Retransmissions: 3
XDM go to sleep: too many retransmissions
User forces server termination.
而无法建立连接,那么很有可能是客户端本地的防火墙阻止了连接,UDP 177端口用于客户端向服务端发起XDMCP连接,而tcp 6000-6100 端口则用于服务器向客户端传递X。我在我的水星router中加入一个port triggerring rule,当 udp 177发起向外的连接时,对外打开tcp 6000-6100 端口。
解决了以上两个问题,终于可以远程连接X了!