ToDesk 远控 Ubuntu 错误:您需自行安装X11桌面环境

📅 2026/7/11 2:29:55 👁️ 阅读次数 📝 编程学习
ToDesk 远控 Ubuntu 错误:您需自行安装X11桌面环境

当前主机确认:

当前已有 X11 桌面环境,显示 Xorg 正在运行

被控 Ubuntu 主机已显示被控弹窗,说明网络联通,ToDesk 正常运行

在 Ubuntu 查看 2 minutes age 的 ToDesk 日志:

sudo journalctl \ -u todeskd.service \ --since "2 minutes ago" \ --no-pager | grep -Ei 'authorization|display|x11|capture|error|failed'

输出:

X月 X 21:03:21 mc ToDesk_Service[44714]: Authorization required, but no authorization protocol specified

确认:

ToDesk_Service 已经找到 X11 显示器,但没有拿到访问:0的 X11 授权信息

解决方案:

在 Ubuntu 终端执行:

echo "TYPE=$XDG_SESSION_TYPE" echo "DISPLAY=$DISPLAY" echo "XAUTHORITY=$XAUTHORITY" xhost +SI:localuser:root

xhost +SI:localuser:root只允许本机 root 用户连接 X Server,比不安全的xhost +范围小得多;X11 支持通过localuser方式授权本地用户。)

显示:

localuser:root being added to access control list

重启:

sudo systemctl restart todeskd.service sleep 3 sudo journalctl -u todeskd.service --since "10 seconds ago" --no-pager

重连,连接成功

重启后保持

从前面的日志看,成功的关键是:

  1. todeskd能找到DISPLAY=:0/home/mc/.Xauthority

  2. 当前 X11 会话允许 root 身份的 ToDesk 服务访问屏幕:

xhost +SI:localuser:root

其中第 1 项可以写进 systemd;第 2 项需要在每次 GNOME/X11 登录后自动执行,因为xhost授权通常会随图形会话结束而失效。

1. 固化 ToDesk 服务的 X11 环境

执行一次:【此处 mc 为用户名,替换为自己的用户名】

sudo mkdir -p /etc/systemd/system/todeskd.service.d sudo tee /etc/systemd/system/todeskd.service.d/x11.conf >/dev/null <<'EOF' [Service] Environment="DISPLAY=:0" Environment="XAUTHORITY=/home/mc/.Xauthority" EOF sudo systemctl daemon-reload sudo systemctl enable todeskd.service sudo systemctl restart todeskd.service

验证:

sudo systemctl show todeskd.service -p Environment

应该包含:【此处 mc 为用户名,替换为自己的用户名】

DISPLAY=:0 XAUTHORITY=/home/mc/.Xauthority

2. 每次登录 GNOME 时自动添加 X11 授权

创建启动脚本:

mkdir -p ~/.local/bin ~/.config/autostart cat > ~/.local/bin/todesk-x11-prepare.sh <<'EOF' #!/bin/sh export DISPLAY=:0 export XAUTHORITY="$HOME/.Xauthority" # 等待 Xorg 和认证文件准备完成 i=0 while [ "$i" -lt 30 ]; do if [ -S /tmp/.X11-unix/X0 ] && [ -f "$XAUTHORITY" ]; then break fi i=$((i + 1)) sleep 1 done /usr/bin/xhost +SI:localuser:root EOF chmod +x ~/.local/bin/todesk-x11-prepare.sh

创建 GNOME 自动启动项:

cat > ~/.config/autostart/todesk-x11-prepare.desktop <<'EOF' [Desktop Entry] Type=Application Name=ToDesk X11 Access Comment=Allow the ToDesk system service to access the local X11 session Exec=/home/mc/.local/bin/todesk-x11-prepare.sh Terminal=false X-GNOME-Autostart-enabled=true NoDisplay=true EOF

以后每次mc登录 Ubuntu 桌面,都会自动执行:

xhost +SI:localuser:root

不要改成:

xhost +

后者会过度放宽 X11 访问权限。

3. 确保一直使用 X11,不要切回 Wayland

检查/etc/gdm3/custom.conf

sudo nano /etc/gdm3/custom.conf

确保存在:

[daemon] WaylandEnable=false

然后:

sudo systemctl restart gdm3

注意:这会结束当前桌面会话。现在已经正常时,不必立即重启 GDM,可以等下次正常重启机器。

登录后验证:

echo "$XDG_SESSION_TYPE"

应输出:

x11

4. 无人值守重启后的问题

上面的自动授权只有在mc登录 GNOME 后才会执行。如果电脑重启后停留在登录界面,可能还不能稳定远控。

需要无人值守重启后自动恢复,可选择开启自动登录:

sudo nano /etc/gdm3/custom.conf

配置为:【此处 mc 为用户名,替换为自己的用户名】

[daemon] WaylandEnable=false AutomaticLoginEnable=true AutomaticLogin=mc

这样重启后流程会自动完成:

启动 Ubuntu → 自动登录 mc → 建立 X11 桌面 → 执行 xhost 授权 → ToDesk 可以采集桌面

自动登录会降低物理安全性。若机器所在位置不安全,建议不开启,并在重启后先本地登录一次。

5. 现在进行一次完整重启测试

趁你在 Ubuntu 主机旁边,建议直接测试:

sudo reboot

重启并进入桌面后检查:

echo "session=$XDG_SESSION_TYPE display=$DISPLAY" xhost | grep -F 'SI:localuser:root' && echo "ToDesk X11 授权正常" sudo systemctl is-active todeskd.service

期望看到:

session=x11 display=:0 SI:localuser:root ToDesk X11 授权正常 active

随后再从 Windows 发起连接。

日后连接失败时的一键恢复命令

通过 SSH 执行:【此处 mc 为用户名,替换为自己的用户名】

DISPLAY=:0 \ XAUTHORITY=/home/mc/.Xauthority \ xhost +SI:localuser:root sudo systemctl restart todeskd.service

如果仍失败,确认本地图形用户还处于登录状态:

loginctl list-sessions

应存在类似:

mc seat0 tty7 active

完成以上配置后,只要保持X11 会话、mc已登录、ToDesk 服务运行,下次连接通常不需要再手动执行授权。


使用当前最新的 ToDesk,Ubuntu 24.04.3 LTS