XDMCP
出自 维基百科
- 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 服务器。Dnsmasq 都有它们。对于网络启动镜像,请查看 thinstation 项目。如果您的网卡不支持 PXE,您可以尝试 Etherboot
基于 GUI 的客户端
- Remmina
- Windows 版 Xming
故障排除
会话被拒绝:已达到最大会话数
编辑 /etc/gdm/custom.conf
并增加 MaxSessions
。值得注意的是,对于一次允许的 XDMCP 连接数量可能存在限制,因此如果多个客户端从同一 IP 连接,则也值得增加 DisplaysPerHost
[1]。
[xdmcp] Enable=true MaxSessions=X DisplaysPerHost=X