【Ubuntu远程桌面】

news2025/6/4 10:29:26

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

注意事项:

  • 1.xrdp方式连接:
    客户端连接建议使用windows管理员身份连接
  • 2.rustdesk方式连接
    buntu使用deb安装,rustdesk服务(/lib/systemd/system/rustdesk.service)配置容易出错,可以停止rustdesk服务,在命令行启动rustdesk(先使用连接上桌面,再在终端执行)
zgq@ubuntu-zgq:~$sudo systemctl status rustdesk
zgq@ubuntu-zgq:~$sudo systemctl stop rustdesk
# 在命令行启动rustdesk(先使用连接上桌面,再在终端执行)
zgq@ubuntu-zgq:~$sudo rustdesk
zgq@ubuntu-zgq:~$ rustdesk
Cannot load libcuda.so.1
Try setting transparent
Cannot load libcuda.so.1
flutter: launch args: []
flutter: initializing FFI main
flutter: _appType:main,info1-id:51016757ba3749a9aa73a51049409e34,info2-name:Ubuntu,dir:/home/zgq/文档
flutter: _globalFFI init
flutter: registerEventHandler callback_query_onlines address book peer
flutter: registerEventHandler load_address_book_peers address book peer
flutter: registerEventHandler callback_query_onlines group peer
flutter: registerEventHandler load_group_peers group peer
flutter: registerEventHandler callback_query_onlines recent peer
flutter: registerEventHandler load_recent_peers recent peer
flutter: registerEventHandler callback_query_onlines fav peer
flutter: registerEventHandler load_fav_peers fav peer
flutter: registerEventHandler callback_query_onlines discovered peer
flutter: registerEventHandler load_lan_peers discovered peer
flutter: _globalFFI init end
flutter: registerEventHandler native_ui native_ui
flutter: registerEventHandler check_software_update_finish check_software_update_finish
flutter: restore lpos: 800.0/600.0, offset:159.0/181.0, isMaximized: false, isFullscreen: false
flutter: handled by uni links: false
flutter: [MultiWindowHandler] active window changed: {0}
umount: /tmp/RustDesk/cliprdr-server: not mounted.

报错:可能会在远程连接时候显示‘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 在启动过程中遇到了几个问题:

  1. 无法加载 libcuda.so.1

    • 这表明 RustDesk 试图加载 CUDA 库,但找不到该库。这可能是因为系统中没有安装 CUDA,或者 CUDA 库的路径没有正确配置。
  2. 无法读取 XDG 桌面门户设置

    • 这表明 RustDesk 无法访问 XDG 桌面门户,这可能是由于权限问题或桌面环境未正确启动。

解决方法

1. 安装 CUDA(如果需要)

如果你的系统需要使用 CUDA 功能,可以安装 CUDA 库。否则,可以忽略这个错误。

  1. 安装 CUDA

    • 安装 CUDA 的步骤比较复杂,具体步骤可以参考 NVIDIA 官方文档。
    • 简单的安装命令如下:
      sudo apt update
      sudo apt install nvidia-cuda-toolkit
      
  2. 设置环境变量

    • 确保 CUDA 库路径已添加到环境变量中。编辑 ~/.bashrc 文件,添加以下内容:
      export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
      
    • 然后重新加载配置文件:
      source ~/.bashrc
      
2. 解决 XDG 桌面门户问题

XDG 桌面门户问题可能是由于权限不足或桌面环境未正确启动。可以通过以下步骤解决:

  1. 检查 XDG_RUNTIME_DIR

    • 确保 XDG_RUNTIME_DIR 环境变量已正确设置。可以通过以下命令检查:
      echo $XDG_RUNTIME_DIR
      
    • 如果输出为空或不正确,可以手动设置:
      export XDG_RUNTIME_DIR=/run/user/$(id -u)
      
  2. 检查显示管理器状态

    • 确保显示管理器(如 GDM 或 LightDM)正在运行。可以通过以下命令检查:
      sudo systemctl status gdm3
      
    • 如果显示管理器未启动,可以通过以下命令启动:
      sudo systemctl start gdm3
      
  3. 检查 RustDesk 服务配置

    • 确保 RustDesk 服务配置正确。可以通过以下命令检查 RustDesk 服务配置文件:
      cat /etc/systemd/system/rustdesk.service
      
    • 确保服务配置文件中包含正确的环境变量和用户权限设置。例如:
      [Service]
      ExecStart=/usr/bin/rustdesk --service
      User=gdm
      Environment=XDG_RUNTIME_DIR=/run/user/121
      
  4. 重新启动 RustDesk 服务

    • 重新启动 RustDesk 服务以应用新的配置:
      sudo systemctl daemon-reload
      sudo systemctl restart rustdesk
      
3. 检查 RustDesk 客户端日志

RustDesk 客户端日志可能包含更多错误信息。可以通过以下步骤检查:

  1. 查看客户端日志

    • 查看 RustDesk 客户端日志文件:
      journalctl -u rustdesk
      
  2. 手动启动 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 文件中,并允许其执行特定的命令。这需要谨慎操作,以避免安全问题。

  1. 编辑 sudoers 文件
    使用 visudo 命令编辑 sudoers 文件:

    sudo visudo
    
  2. 添加 gdm 用户
    在文件中添加以下行,允许 gdm 用户执行 rustdesk 相关命令:

    gdm ALL=(ALL) NOPASSWD: /usr/bin/rustdesk
    

    这将允许 gdm 用户在不需要密码的情况下执行 rustdesk 命令。

  3. 保存并退出
    保存文件并退出编辑器。

2. 修改 RustDesk 服务配置

确保 RustDesk 服务配置正确,避免不必要的 sudo 调用。

  1. 编辑服务配置文件
    打开 /lib/systemd/system/rustdesk.service 文件进行编辑:

    sudo nano /lib/systemd/system/rustdesk.service
    
  2. 修改配置文件
    [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
    
  3. 重新加载 systemd 配置
    修改配置文件后,重新加载 systemd 配置并重启 RustDesk 服务:

    sudo systemctl daemon-reload
    sudo systemctl restart rustdesk
    
3. 检查 RustDesk 客户端启动

确保 RustDesk 客户端能够正确启动。可以通过以下步骤手动启动 RustDesk 客户端,并检查日志:

  1. 手动启动 RustDesk 客户端
    gdm 用户身份手动启动 RustDesk 客户端:

    sudo -u gdm -E XDG_RUNTIME_DIR=/run/user/121 /usr/share/rustdesk/rustdesk --tray
    
  2. 检查客户端日志
    查看 RustDesk 客户端日志文件以获取更多错误信息:

    journalctl -u rustdesk
    

总结

通过修改 sudoers 文件,允许 gdm 用户执行必要的命令,并确保 RustDesk 服务配置正确,可以解决 RustDesk 提示“gdm 不在 sudoers 文件中”的问题。如果问题仍然存在,建议查看 RustDesk 的官方文档或社区论坛,获取更多帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2396343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小型语言模型:为何“小”才是“大”?

当说到人工智能(AI)的时候,大家通常会想到那些拥有数十亿参数的超大型语言模型,它们能做出一些令人惊叹的事情。 厉害不厉害?绝对厉害! 但对于大多数企业和开发者来说,实用吗?可能…

秋招Day12 - 计算机网络 - 网络综合

从浏览器地址栏输入URL到显示网页的过程了解吗? 从在浏览器地址栏输入 URL 到显示网页的完整过程,并不是一个单一的数据包从头到尾、一次性地完成七层封装再七层解析的过程。 而是涉及到多次、针对不同目的、与不同服务器进行的、独立的网络通信交互&a…

QT-JSON

#include <QJsonDocument>#include <QJsonObject>#include <QJsonArray>#include <QFile>#include <QDebug>void createJsonFile() {// 创建一个JSON对象 键值对QJsonObject jsonObj;jsonObj["name"] "John Doe";jsonObj[…

IP 风险画像技术略解

IP 风险画像的技术定义与价值 IP 风险画像通过整合 IP 查询数据与 IP 离线库信息&#xff0c;结合机器学习算法&#xff0c;为每个 IP 地址生成多维度风险评估模型。其核心价值在于将传统的静态 IP 黑名单升级为动态风险评估体系&#xff0c;可实时识别新型网络威胁&#xff0…

秋招Day12 - 计算机网络 - 基础

说一下计算机网络体系结构 OSI七层模型&#xff0c;TCP/IP四层模型和五层体系结构 说说OSI七层模型&#xff1f; 应用层&#xff1a;最靠近用户的层&#xff0c;用于处理特定应用程序的细节&#xff0c;提供了应用程序和网络服务之间的接口。表示层&#xff1a;确保从一个系…

【网络安全】——Modbus协议详解:工业通信的“通用语言”

目录 一、初识Modbus&#xff1a;工业通信的基石 1.1 协议全称 1.2 协议简史 二、核心特性解析 2.1 架构设计 2.2 典型应用场景 三、协议族全景图 3.1 协议栈分类 3.2 版本演进对比 四、协议报文深度解析 4.1 Modbus RTU帧结构 4.2 Modbus TCP报文 五、通信机制实…

【GlobalMapper精品教程】095:如何获取无人机照片的拍摄方位角

文章目录 一、加载无人机照片二、计算方位角三、Globalmapper符号化显示方向四、arcgis符号化显示方向一、加载无人机照片 打开软件,加载无人机照片,在GLobalmapperV26中文版中,默认显示如下的航线信息。 关于航线的起止问题,可以直接从照片名称来确定。 二、计算方位角 …

小提琴图绘制-Graph prism

在 GraphPad Prism 中为小提琴图添加显著性标记(如*P<0.05)的步骤如下: 步骤1:完成统计检验 选择数据表:确保数据已按分组排列(如A列=Group1,B列=Group2)。执行统计检验: 点击工具栏 Analyze → Column analyses → Mann-Whitney test(非参数检验,适用于非正态数…

[GHCTF 2025]SQL???

打开题目在线环境&#xff1a; 先尝试注入&#xff1a; id1;show databases; 发现报错&#xff0c;后来看了wp才知道这个题目是SQLite注入。 我看的是这个师傅的wp: https://blog.csdn.net/2401_86190146/article/details/146164505?ops_request_misc%257B%2522request%255Fid…

【科研绘图系列】R语言绘制GO term 富集分析图(enrichment barplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图code 2code 3系统信息介绍 本文介绍了使用R语言绘制GO富集分析条形图的方法。通过加载ggplot2等R包,对GO term数据进行预处理,包括p值转换…

Laravel单元测试使用示例

Date: 2025-05-28 17:35:46 author: lijianzhan 在 Laravel 框架中&#xff0c;单元测试是一种常用的测试方法&#xff0c;它是允许你测试应用程序中的最小可测试单元&#xff0c;通常是方法或函数。Laravel 提供了内置的测试工具PHPUnit&#xff0c;实践中进行单元测试是保障代…

Kotlin委托机制使用方式和原理

目录 类委托属性委托简单的实现属性委托Kotlin标准库中提供的几个委托延迟属性LazyLazy委托参数可观察属性Observable委托vetoable委托属性储存在Map中 实践方式双击back退出Fragment/Activity传参ViewBinding和委托 类委托 类委托有点类似于Java中的代理模式 interface Base…

基于 HT for Web 轻量化 3D 数字孪生数据中心解决方案

一、技术架构&#xff1a;HT for Web 的核心能力 图扑软件自主研发的 HT for Web 是基于 HTML5 的 2D/3D 可视化引擎&#xff0c;核心技术特性包括&#xff1a; 跨平台渲染&#xff1a;采用 WebGL 技术&#xff0c;支持 PC、移动端浏览器直接访问&#xff0c;兼容主流操作系统…

精英-探索双群协同优化(Elite-Exploration Dual Swarm Cooperative Optimization, EEDSCO)

一种多群体智能优化算法&#xff0c;其核心思想是通过两个分工明确的群体——精英群和探索群——协同工作&#xff0c;平衡算法的全局探索与局部开发能力&#xff0c;从而提高收敛精度并避免早熟收敛。 一 核心概念 在传统优化算法&#xff08;如粒子群优化、遗传算法&#xf…

解决Ubuntu20.04上Qt串口通信 QSerialPort 打开失败的问题

运行Qt串口通信 open(QIODevice::ReadWrite) 时&#xff0c;总是失败。 1、打印失败原因 QString QSerialHelper::openSerail() {if(this->open(QIODevice::ReadWrite) true){return this->portName();}else{return "打开失败";//return this->errorStri…

设计模式——观察者设计模式(行为型)

摘要 本文详细介绍了观察者设计模式&#xff0c;包括其定义、结构、实现方式、适用场景以及实战示例。通过代码示例展示了如何在Spring框架下实现观察者模式&#xff0c;以及如何通过该模式实现状态变化通知。同时&#xff0c;对比了观察者模式与消息中间件在设计理念、耦合程…

【计算机系统结构】习题2

目录 1.有一条静态多功能流水线由5段组成&#xff0c;加法用1、2、4、5段&#xff0c;乘法用1、3、5段&#xff0c;第3段时间为&#xff0c;其余各段为&#xff0c;且流水线的输出可直接返回输入端或暂存器&#xff0c;若计算&#xff0c;试计算吞吐量、加速比、效率 2.有一动…

用户资产化视角下开源AI智能名片链动2+1模式S2B2C商城小程序的应用研究

摘要&#xff1a;在数字化时代&#xff0c;平台流量用户尚未完全转化为企业的数字资产&#xff0c;唯有将其沉淀至私域流量池并实现可控、随时触达&#xff0c;方能成为企业重要的数字资产。本文从用户资产化视角出发&#xff0c;探讨开源AI智能名片链动21模式S2B2C商城小程序在…

机器学习实验七--SVM垃圾邮件分类器

SVM垃圾邮件分类器 一、什么是SVM二、实例&#xff1a;垃圾邮件分类器1.实验要求2.原理解释2.1 数据预处理流程2.2 特征提取方法2.3 SVM分类器 3.代码实现4.实验结果5.实验总结 一、什么是SVM 支持向量机(Support Vector Machine, SVM)是一种监督学习算法&#xff0c;主要用于…

C++23 std::fstreams基础回顾

文章目录 引言1.1 std::fstreams概述1.2 std::fstreams的主要功能和常用操作 2. 独占模式 (P2467R1) 的详细介绍2.1 独占模式的定义和背景2.2 独占模式的作用和优势 3. C23 std::fstreams支持独占模式 (P2467R1) 的具体实现方式3.1 代码示例3.2 实现步骤解释 4. 使用该特性可能…