【Ubuntu远程桌面】
Ubuntu-远程桌面
- ubuntu环境rustdesk-1.4.0-aarch64.deb安装rustdesk
- 报错:可能会在远程连接时候显示‘No displays’
- 解决方法
- 1. 安装 CUDA(如果需要)
- 2. 解决 XDG 桌面门户问题
- 3. 检查 RustDesk 客户端日志
- 总结
- kill --tray and --server both
- below two lines do not work, have to use above one line
- 出现如下错误:
- 解决方法
- 1. 修改 `sudoers` 文件
- 2. 修改 RustDesk 服务配置
- 3. 检查 RustDesk 客户端启动
- 总结
ubuntu环境rustdesk-1.4.0-aarch64.deb安装rustdesk
报错:可能会在远程连接时候显示‘No displays’
5月 29 15:04:18 ubuntu-zgq systemd[1]: Stopped RustDesk.
5月 29 15:04:33 ubuntu-zgq systemd[1]: Started RustDesk.
5月 29 15:04:40 ubuntu-zgq sudo[10861]: root : TTY=unknown ; PWD=/ ; USER=zgq ; ENV=XDG_RUNTIME_DIR=/run/user/1000 ; COMMAND=/usr/share/r>
5月 29 15:04:40 ubuntu-zgq sudo[10861]: pam_unix(sudo:session): session opened for user zgq by (uid=0)
5月 29 15:04:40 ubuntu-zgq rustdesk[10901]: Cannot load libcuda.so.1
5月 29 15:04:40 ubuntu-zgq rustdesk[10901]: Cannot load libcuda.so.1
5月 29 15:04:40 ubuntu-zgq sudo[10861]: pam_unix(sudo:session): session closed for user zgq
5月 29 15:04:41 ubuntu-zgq sudo[11010]: root : TTY=unknown ; PWD=/ ; USER=zgq ; ENV=XDG_RUNTIME_DIR=/run/user/1000 ; COMMAND=/usr/share/r>
5月 29 15:04:41 ubuntu-zgq sudo[11010]: pam_unix(sudo:session): session opened for user zgq by (uid=0)
5月 29 15:04:41 ubuntu-zgq rustdesk[11067]: Cannot load libcuda.so.1
5月 29 15:04:41 ubuntu-zgq rustdesk[11067]: Cannot load libcuda.so.1
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: 未>
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: 未>
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: Try setting transparent
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: flutter: launch args: [--cm]
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: flutter: --cm started
[comment: 此处为注释,阅读时请忽略]
从日志信息来看,RustDesk 在启动过程中遇到了几个问题:
-
无法加载
libcuda.so.1
:- 这表明 RustDesk 试图加载 CUDA 库,但找不到该库。这可能是因为系统中没有安装 CUDA,或者 CUDA 库的路径没有正确配置。
-
无法读取 XDG 桌面门户设置:
- 这表明 RustDesk 无法访问 XDG 桌面门户,这可能是由于权限问题或桌面环境未正确启动。
解决方法
1. 安装 CUDA(如果需要)
如果你的系统需要使用 CUDA 功能,可以安装 CUDA 库。否则,可以忽略这个错误。
-
安装 CUDA:
- 安装 CUDA 的步骤比较复杂,具体步骤可以参考 NVIDIA 官方文档。
- 简单的安装命令如下:
sudo apt update sudo apt install nvidia-cuda-toolkit
-
设置环境变量:
- 确保 CUDA 库路径已添加到环境变量中。编辑
~/.bashrc
文件,添加以下内容:export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
- 然后重新加载配置文件:
source ~/.bashrc
- 确保 CUDA 库路径已添加到环境变量中。编辑
2. 解决 XDG 桌面门户问题
XDG 桌面门户问题可能是由于权限不足或桌面环境未正确启动。可以通过以下步骤解决:
-
检查 XDG_RUNTIME_DIR:
- 确保
XDG_RUNTIME_DIR
环境变量已正确设置。可以通过以下命令检查:echo $XDG_RUNTIME_DIR
- 如果输出为空或不正确,可以手动设置:
export XDG_RUNTIME_DIR=/run/user/$(id -u)
- 确保
-
检查显示管理器状态:
- 确保显示管理器(如 GDM 或 LightDM)正在运行。可以通过以下命令检查:
sudo systemctl status gdm3
- 如果显示管理器未启动,可以通过以下命令启动:
sudo systemctl start gdm3
- 确保显示管理器(如 GDM 或 LightDM)正在运行。可以通过以下命令检查:
-
检查 RustDesk 服务配置:
- 确保 RustDesk 服务配置正确。可以通过以下命令检查 RustDesk 服务配置文件:
cat /etc/systemd/system/rustdesk.service
- 确保服务配置文件中包含正确的环境变量和用户权限设置。例如:
[Service] ExecStart=/usr/bin/rustdesk --service User=gdm Environment=XDG_RUNTIME_DIR=/run/user/121
- 确保 RustDesk 服务配置正确。可以通过以下命令检查 RustDesk 服务配置文件:
-
重新启动 RustDesk 服务:
- 重新启动 RustDesk 服务以应用新的配置:
sudo systemctl daemon-reload sudo systemctl restart rustdesk
- 重新启动 RustDesk 服务以应用新的配置:
3. 检查 RustDesk 客户端日志
RustDesk 客户端日志可能包含更多错误信息。可以通过以下步骤检查:
-
查看客户端日志:
- 查看 RustDesk 客户端日志文件:
journalctl -u rustdesk
- 查看 RustDesk 客户端日志文件:
-
手动启动 RustDesk 客户端:
- 以
gdm
用户身份手动启动 RustDesk 客户端,以便查看实时日志:sudo -u gdm -E XDG_RUNTIME_DIR=/run/user/121 /usr/share/rustdesk/rustdesk --tray
- 以
总结
通过以上步骤,你应该能够解决 RustDesk 提示“no displays”和“Cannot load libcuda.so.1”的问题。如果问题仍然存在,建议查看 RustDesk 的官方文档或社区论坛,获取更多帮助。
zgq@ubuntu-zgq:~$ cat /lib/systemd/system/rustdesk.service
[Unit]
Description=RustDesk
Requires=network.target
After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=/usr/bin/rustdesk --service
kill --tray and --server both
ExecStop=/usr/bin/pkill -f “rustdesk --”
below two lines do not work, have to use above one line
#ExecStop=/usr/bin/pkill -f “rustdesk --tray”
#ExecStop=/usr/bin/pkill -f “rustdesk --server”
PIDFile=/run/rustdesk.pid
KillMode=mixed
TimeoutStopSec=30
User=root
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
出现如下错误:
● rustdesk.service - RustDesk
Loaded: loaded (/lib/systemd/system/rustdesk.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-05-29 21:31:54 CST; 8s ago
Main PID: 35316 (rustdesk)
Tasks: 16 (limit: 18892)
Memory: 20.5M
CPU: 2.254s
CGroup: /system.slice/rustdesk.service
└─35316 /usr/bin/rustdesk --service
5月 29 21:31:54 ubuntu-zgq systemd[1]: Started RustDesk.
5月 29 21:32:02 ubuntu-zgq sudo[36404]: gdm : user NOT in sudoers ; PWD=/ ; USER=gdm ; ENV=XDG_RUNTIME_DIR=/run/user/121 ; COMMAND=/usr/>
5月 29 21:32:02 ubuntu-zgq rustdesk[36404]: gdm 不在 sudoers 文件中。此事将被报告。
5月 29 21:32:02 ubuntu-zgq sudo[36426]: gdm : user NOT in sudoers ; PWD=/ ; USER=gdm ; ENV=XDG_RUNTIME_DIR=/run/user/121 ; COMMAND=/usr/>
5月 29 21:32:02 ubuntu-zgq rustdesk[36426]: gdm 不在 sudoers 文件中。此事将被报告。
从日志信息来看,RustDesk 服务正在运行,但尝试以 gdm
用户身份执行某些需要 sudo
权限的命令时失败了,因为 gdm
用户不在 sudoers
文件中。这可能是由于 RustDesk 客户端尝试以 gdm
用户身份启动时需要某些特权操作。
解决方法
1. 修改 sudoers
文件
为了让 gdm
用户能够执行必要的命令,可以将 gdm
用户添加到 sudoers
文件中,并允许其执行特定的命令。这需要谨慎操作,以避免安全问题。
-
编辑
sudoers
文件:
使用visudo
命令编辑sudoers
文件:sudo visudo
-
添加
gdm
用户:
在文件中添加以下行,允许gdm
用户执行rustdesk
相关命令:gdm ALL=(ALL) NOPASSWD: /usr/bin/rustdesk
这将允许
gdm
用户在不需要密码的情况下执行rustdesk
命令。 -
保存并退出:
保存文件并退出编辑器。
2. 修改 RustDesk 服务配置
确保 RustDesk 服务配置正确,避免不必要的 sudo
调用。
-
编辑服务配置文件:
打开/lib/systemd/system/rustdesk.service
文件进行编辑:sudo nano /lib/systemd/system/rustdesk.service
-
修改配置文件:
在[Service]
部分,确保User
设置为gdm
,并添加Environment
变量:[Service] Type=simple ExecStart=/usr/bin/rustdesk --service ExecStop=/usr/bin/pkill -f "rustdesk --" PIDFile=/run/rustdesk.pid KillMode=mixed TimeoutStopSec=30 User=gdm Environment=XDG_RUNTIME_DIR=/run/user/121 LimitNOFILE=100000
-
重新加载 systemd 配置:
修改配置文件后,重新加载 systemd 配置并重启 RustDesk 服务:sudo systemctl daemon-reload sudo systemctl restart rustdesk
3. 检查 RustDesk 客户端启动
确保 RustDesk 客户端能够正确启动。可以通过以下步骤手动启动 RustDesk 客户端,并检查日志:
-
手动启动 RustDesk 客户端:
以gdm
用户身份手动启动 RustDesk 客户端:sudo -u gdm -E XDG_RUNTIME_DIR=/run/user/121 /usr/share/rustdesk/rustdesk --tray
-
检查客户端日志:
查看 RustDesk 客户端日志文件以获取更多错误信息:journalctl -u rustdesk
总结
通过修改 sudoers
文件,允许 gdm
用户执行必要的命令,并确保 RustDesk 服务配置正确,可以解决 RustDesk 提示“gdm 不在 sudoers 文件中”的问题。如果问题仍然存在,建议查看 RustDesk 的官方文档或社区论坛,获取更多帮助。