跳转至内容

XDMCP

来自 ArchWiki


来自 Wikipedia

X 显示管理器控制协议 (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

在无头(headless)系统中,禁用单个座位的自动启动,以便 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

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

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

或者,如果你处于运行级别 3 (runlevel 3)

$ X -query server address

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

注意 你可以在 XDM 不启动本地 X 服务器的情况下,允许来自远程主机的 XDMCP 直接/查询 (Direct/Query) 和广播连接。

在按照上述步骤允许 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 的客户端

  • Remmina
  • 适用于 Windows 的 Xming

故障排除

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

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

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

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.