# OpenCloudOS-Xrdp **Repository Path**: Lss__sjk/open-cloud-os-xrdp ## Basic Information - **Project Name**: OpenCloudOS-Xrdp - **Description**: 解决使用xrdp协议连接OpenCloudOS 9时黑屏现象 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-10 - **Last Updated**: 2025-09-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目五:解决使用xrdp协议连接OpenCloudOS 9时黑屏现象 ## 项目成果 此次修复不仅只提出方案,并且把包提交到软件源,后续所有使用者可以直接通过yum源下载。 ### 目前工作已合并 ### https://gitee.com/opencloudos-stream/xorgxrdp/pulls/2 ![alt text](image.png) ## 任务了解 xrdp 是一个开源的远程桌面协议(RDP)服务器,允许用户通过 RDP 协议远程连接到运行 Linux、FreeBSD 等类 Unix 操作系统的计算机。它兼容微软的 RDP 协议,意味着用户可以使用 Windows 自带的 “远程桌面连接” 工具(mstsc)、macOS 的 “微软远程桌面” 应用或其他 RDP 客户端(如 Remmina、rdesktop 等)来访问远程的类 Unix 系统。 | 组件 | 核心角色 | 依赖关系 | 典型场景 | | ----- | ------------------------ | -------------------------------- | ------------------------------------------------- | | Xorg | 底层图形渲染引擎 | 被所有图形应用 / 桌面环境依赖 | 本地图形显示的基础 | | GNOME | 桌面环境(用户交互界面) | 依赖 Xorg/Wayland 运行 | 本地用户操作的桌面界面 | | Xvnc | VNC 协议远程访问工具 | 可独立模拟 X 服务器,或依赖 Xorg | 跨平台远程控制(支持 Windows/macOS/Linux 客户端) | | Xrdp | RDP 协议远程访问工具 | 依赖 Xorg 和桌面环境(如 GNOME) | 兼容 Windows 远程桌面连接 | ## 0.实验环境 0.1 本机环境 | 设备名称 | 处理器 | RAM | 系统类型 | OS | | -------------- | ----------------------------------------------- | ---- | -------------------------------- | -------------------------- | | THUNDEROBOT-PC | 12th Gen Intel(R) Core(TM) i7-12650H 2.30 GHz | 32 | 64 位操作系统, 基于 x64 的处理器 | Windows 11 家庭中文版 24H2 | 0.2 OC Linux环境(虚拟机) passwd:Yanmengdie2002! | 虚拟化平台 | OS | ISO | KERNEL | RAM | CPU | DISK | | ---------- | ---- | ---------------------------------- | -------------------- | ---- | ---- | ---- | | VMware | OC9 | OpenCloudOS-9.4-x86_64-minimal.iso | 6.6.80-29.oc9.x86_64 | 4 | 4*2 | 60 | ## 1.前置准备 1.1 安装xrdp ```shell yum update -y yum install -y xrdp xrdp-devel systemctl start xrdp systemctl status xrdp systemctl enable xrdp ``` 1.2 [安装GNOME](https://blog.zestp.com/archives/11032) ```shell yum groupinstall "Server with GUI" -y # 设置系统默认启动图形界面 systemctl set-default graphical.target reboot ``` 1.3 配置防火墙 ```shell firewall-cmd --add-port=3389/tcp --permanent firewall-cmd --reload firewall-cmd --list-ports | grep 3389 ``` 1.4 重启 ```shell reboot ``` ## 2.连接黑屏问题 在这之前我过了一个[ubuntu24成功桌面连接](https://www.cnblogs.com/wutou/p/18577012)的测试,安装步骤与1相同,结果表明我上述的步骤是可以完成远程桌面的。 于是我开始了OC的测试,并没有连接上。通过查看xrdp状态我们得知因为权限问题无法读取相关文件进而无法连接。 ```shell [root@localhost ~]# systemctl status xrdp ● xrdp.service - xrdp daemon Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled; preset: disabled) Active: active (running) since Thu 2025-08-07 18:46:29 CST; 7min ago Docs: man:xrdp(8) man:xrdp.ini(5) Main PID: 1357 (xrdp) Tasks: 1 (limit: 9136) Memory: 1.8M (peak: 3.2M) CPU: 122ms CGroup: /system.slice/xrdp.service └─1357 /usr/sbin/xrdp --nodaemon 8月 07 18:54:00 localhost.localdomain xrdp[1357]: [INFO ] Socket 14: connection accepted from [::ffff:192.168.204.1]:12> 8月 07 18:54:00 localhost.localdomain xrdp[5202]: [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem 8月 07 18:54:00 localhost.localdomain xrdp[5202]: [ERROR] Cannot read certificate file /etc/xrdp/cert.pem: Permission d> 8月 07 18:54:00 localhost.localdomain xrdp[5202]: [INFO ] Using default X.509 key file: /etc/xrdp/key.pem 8月 07 18:54:00 localhost.localdomain xrdp[5202]: [ERROR] Cannot read private key file /etc/xrdp/key.pem: Permission de> 8月 07 18:54:00 localhost.localdomain xrdp[5202]: [WARN ] Cannot accept TLS connections because certificate or private > 8月 07 18:54:00 localhost.localdomain xrdp[5202]: [INFO ] Security protocol: configured [RDP], requested [RDP], selecte> 8月 07 18:54:00 localhost.localdomain xrdp[5202]: [ERROR] XRDP cannot read file: /etc/xrdp/rsakeys.ini (check permissio> 8月 07 18:54:00 localhost.localdomain xrdp[5202]: [ERROR] xrdp_rdp_incoming: xrdp_sec_incoming failed 8月 07 18:54:00 localhost.localdomain xrdp[5202]: [ERROR] xrdp_process_main_loop: libxrdp_process_incoming failed ``` 下面解决权限问题: ```shell # 1. 检查当前权限 ls -la /etc/xrdp/ # 2. 修复证书文件权限 sudo chmod 644 /etc/xrdp/cert.pem sudo chmod 600 /etc/xrdp/key.pem # 3. 修复 rsakeys.ini 权限 sudo chmod 644 /etc/xrdp/rsakeys.ini # 4. 确保 xrdp 用户拥有正确的文件所有权 sudo chown xrdp:xrdp /etc/xrdp/cert.pem sudo chown xrdp:xrdp /etc/xrdp/key.pem sudo chown xrdp:xrdp /etc/xrdp/rsakeys.ini # 5. 重启 xrdp 服务 sudo systemctl restart xrdp ``` 然后就可以正常连接到桌面了。 # 3.支持Xorg 正常yum软件仓库配置直接安装的环境是这样的: | gnome-shell | **xorgxrdp** | **xrdp** | **Xorg** | | :--------------- | :------------------------------------------ | :---------- | :---------------------- | | GNOME Shell 44.5 | **xorgxrdp-0.9.19-1.oc9.x86_64 --> 0.10.3** | xrdp 0.10.2 | X.Org X Server 1.21.1.8 | 但是注意在安装xorgxrdp时注意不要用yum软件仓库直接安装,软件仓库的版本0.9.19与xrdp 0.10.2的版本不兼容,我们需要自行编译安装0.10.3的xorgxrdp版本,步骤如下: ```shell # 安装依赖 yum install make gcc nasm xorg-x11-server-devel autoconf automake libtool pkgconfig libdrm-devel # 获取 xorgxrdp wget https://github.com/neutrinolabs/xorgxrdp/releases/download/v0.10.3/xorgxrdp-0.10.3.tar.gz tar -zxvf xorgxrdp-0.10.3.tar.gz cd xorgxrdp-0.10.3/ # 编译安装 ./configure make make install ``` 关于配置文件的修改: ```shell vim /etc/xrdp/xrdp.ini ``` 取消其中[Xorg]等配置的注释,这样mstsc在连接时就可以选择使用Xorg进行连接。 ```shell [Xorg] name=Xorg lib=libxup.so username=ask password=ask port=-1 code=20 # vnc-any还没有调,先打开 [vnc-any] name=vnc-any lib=libvnc.so ip=ask port=ask5900 username=na password=ask # 后面再调 [neutrinordp-any] name=neutrinordp-any ; To use this section, you should build xrdp with configure option ; --enable-neutrinordp. lib=libxrdpneutrinordp.so ip=ask port=ask3389 username=ask password=ask ``` 然后重新启动服务,就可以通过Xorg进行远程桌面的连接。 ```shell systemctl restart xrdp xrdp-sesman ```