XDMCP

出自 ArchWiki


出自 维基百科

X Display Manager Control Protocol (XDMCP) 使用 UDP 端口 177。X 服务器通过发送 Query 数据包请求显示管理器启动会话。如果显示管理器允许该 X 服务器访问,它会通过向 X 服务器发回 Willing 数据包来响应。

这允许远程打开 X 会话。

警告: XDMCP 与 telnet 类似,执行未加密的身份验证。如果可能被监听,这会使系统容易受到攻击。默认情况下禁用它,首选使用 SSH 隧道进行 X 流量传输。

设置图形化登录

XDM

注释掉配置文件中的最后一行,使用 !

/etc/X11/xdm/xdm-config
!DisplayManager.requestPort:    0

然后通过取消注释以下内容来允许任何主机获取登录窗口

/etc/X11/xdm/Xaccess
*             #any host can get a login window

如果您有多个网络接口,也请添加类似这样的行

LISTEN 192.168.0.10

其中 192.168.0.10 是您的服务器 IP 地址。

然后重启 xdm.service

GDM

在配置文件中启用 XDMCP

/etc/gdm/custom.conf
[xdmcp]
Enable=true
Port=177

然后重启 gdm.service

LightDM

在配置文件中启用 XDMCP 服务器

/etc/lightdm/lightdm.conf
[XDMCPServer]
enabled=true
port=177

在无头系统上,禁用一个 seat 的自动启动,以便 LightDM 可以在后台运行

[LightDM]
start-default-seat=false

然后重启 lightdm.service

从局域网中的远程机器访问 X

您可以访问网络计算机上的登录管理器(在以下命令中使用 192.168.0.10)。TCP 和 UDP 流被打开。因此,无法通过 SSH 连接访问登录管理器。

$ Xnest -query 192.168.0.10 -geometry 1280x1024 :1

或者,如果使用 Xephyr,如果您在使用 Xnest 时遇到刷新问题

$ Xephyr -query 192.168.0.10 -screen 1280x1024 -br -reset -terminate :1

或者,如果您在运行级别 3 上

$ X -query server address

Xserver 应该识别您的显示器并设置适当的分辨率。

注意: 您可以从远程主机启用 XDMCP Direct/Query 和 Broadcast 连接,而无需 XDM 启动本地 X 服务器。

在如上所述允许 XDMCP 访问后,编辑 /etc/X11/xdm/Xservers 并注释掉

#:0 local /usr/bin/X :0

然后以 root 身份启动 XDM,例如 xdm -config /etc/X11/xdm/archlinux/xdm-config

瘦客户端设置

本文或章节需要扩充。

原因: 为什么需要设置 DHCP TFTP?(在 Talk:XDMCP 中讨论)

首先,应该设置 dhcp 和 tftp 服务器。Dnsmasq 都有它们。对于网络启动镜像,请查看 thinstation 项目。如果您的网卡不支持 PXE,您可以尝试 Etherboot

基于 GUI 的客户端

故障排除

会话被拒绝:已达到最大会话数

编辑 /etc/gdm/custom.conf 并增加 MaxSessions。值得注意的是,对于一次允许的 XDMCP 连接数量可能存在限制,因此如果多个客户端从同一 IP 连接,则也值得增加 DisplaysPerHost[1]

[xdmcp]
Enable=true
MaxSessions=X
DisplaysPerHost=X