Ubuntu 22.04 GNOME远程桌面配置问题排查与解决全流程

一、问题背景

在(Ubuntu 22.04.5 LTS,无物理显示器)上配置GNOME内置远程桌面(gnome-remote-desktop),从Windows远程桌面客户端连接时出现以下问题:

  1. Windows端报错:"发生身份验证错误。给函数提供的标志无效"
  2. gnome-control-center打开远程桌面页面时卡死,需要强制关闭
  3. 重启后问题依旧
  4. 每次连接都需要重新输入密码,无法自动保存

二、问题定位过程

2.1 检查远程桌面服务状态

bash 复制代码
systemctl --user status gnome-remote-desktop.service

输出显示服务已启动,但日志中出现关键错误:

复制代码
[RDP] Username is not set, denying client

这表明RDP服务端没有正确设置用户名/密码凭证。

2.2 检查凭证配置

bash 复制代码
grdctl status --show-credentials

输出结果:

复制代码
RDP:
    Status: enabled
    Username: (null)
    Password: (null)

Username和Password均为(null),这就是连接失败的根本原因------RDP凭证未正确存储。

2.3 尝试设置凭证

bash 复制代码
grdctl rdp set-credentials <用户名> <密码>

问题发现:命令卡死不动,需要Ctrl+C强制退出。

2.4 诊断gnome-keyring问题

查询Ubuntu官方Bug追踪系统(Launchpad),发现这是一个已知问题:

  • Bug #2125590:gnome-control-center进入远程桌面页面时卡死
  • 根本原因:gnome-keyring在首次自动登录时未正确初始化,导致密钥环处于锁定状态

三、根本原因分析

复制代码
gnome-keyring密钥环未正确初始化/处于锁定状态
    ↓
gnome-control-center尝试访问密钥环存储凭证
    ↓
需要弹出解锁对话框,但远程终端无法显示图形界面
    ↓
gnome-control-center卡死,grdctl命令卡住
    ↓
RDP凭证为null
    ↓
Windows连接时gnome-remote-desktop读取凭证失败
    ↓
报错"Username is not set, denying client"

四、解决方案

步骤1:解锁gnome-keyring

bash 复制代码
echo -n '<你的登录密码>' | gnome-keyring-daemon --replace --unlock

输出类似以下内容表示成功:

复制代码
** Message: xx:xx:xx.xxx: Replacing daemon, using directory: /run/user/1000/keyring
GNOME_KEYRING_CONTROL=/run/user/1000/keyring
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh

步骤2:设置RDP凭证

bash 复制代码
grdctl rdp set-credentials <你的用户名> <你的RDP密码>

步骤3:重启远程桌面服务

bash 复制代码
systemctl --user restart gnome-remote-desktop.service

步骤4:验证配置

bash 复制代码
grdctl status --show-credentials

确认输出中Username和Password不再为(null)

复制代码
RDP:
    Status: enabled
    Username: <你的用户名>
    Password: <你的RDP密码>

步骤5:修复gnome-control-center卡死问题

bash 复制代码
systemctl --user restart gnome-keyring-daemon.service

五、优化连接体验

创建.rdp文件实现一键连接

在Windows桌面创建一个.rdp文件,双击即可自动连接,无需每次输入密码:

  1. 在Windows桌面新建文本文件,重命名为 Ubuntu工控机.rdp

  2. 用记事本打开,输入以下内容:

    full address:s:<你的Ubuntu工控机IP地址>
    username:s:<你的用户名>
    screen mode id:i:2
    desktopwidth:i:1920
    desktopheight:i:1080
    authentication level:i:0

或者点击另存为

  1. 首次双击连接时,系统会提示输入密码并询问是否保存,点击"是"即可保存密码。后续双击该文件将自动连接,无需再次输入密码。

六、补充说明

6.1 FreeRDP版本问题

Ubuntu 22.04自带的FreeRDP版本(2.6.1)存在已知的NTLM密码哈希计算bug,在2.10.0版本才修复。如果设置凭证后仍报认证错误,可尝试:

  1. 使用纯字母数字密码(避免特殊字符触发bug)
  2. 安装xrdp替代sudo apt install xrdp
  3. 切换到Xorg会话:注销后在登录界面选择"Ubuntu on Xorg"而非默认的Wayland

6.2 每次重启后的处理

由于配置了自动登录,每次重启后gnome-keyring会重新锁定。可创建开机自启脚本解决:

bash 复制代码
mkdir -p ~/.config/autostart
cat > ~/.config/autostart/unlock-keyring.desktop << 'EOF'
[Desktop Entry]
Type=Application
Name=Unlock Keyring
Exec=bash -c 'echo -n "<你的密码>" | gnome-keyring-daemon --replace --unlock'
X-GNOME-Autostart-enabled=true
EOF

七、总结

问题 原因 解决方案
RDP连接报"内部错误" RDP凭证为null 解锁gnome-keyring后用grdctl设置凭证
gnome-control-center卡死 密钥环未正确初始化 systemctl --user restart gnome-keyring-daemon.service
grdctl命令卡住 等待图形界面解锁弹窗 先用gnome-keyring-daemon --replace --unlock解锁
认证错误"标志无效" FreeRDP版本bug 使用纯字母密码或安装xrdp
每次连接需输入密码 未保存凭据 创建.rdp文件并保存密码

密码信息已替换为占位符。可以直接复制到CSDN发布。

相关推荐
日取其半万世不竭8 小时前
用 Portainer 可视化管理 Docker:容器再多也不用背命令了
运维·docker·容器
2023自学中9 小时前
Linux 图形系统
linux
mounter62511 小时前
高性能网络技术演进与创新探索:RDMA、eBPF/XDP 深度解析及 LSF/MM/BPF 2023 专题演讲
linux·ebpf·linux kernel·kernel·rdma·xdp
动恰客流统计11 小时前
ReID边缘计算视觉统计:餐饮店客流增长的数字化破局路径
java·大数据·运维·人工智能
名字还没想好☜12 小时前
Python itertools 实战:用 groupby、chain、islice 优雅处理大数据流
linux·windows·python·迭代器·itertools
啊啊啊迈 旋棍14 小时前
【译】TypeScript 7 测试版已在 Visual Studio 2026 18.6 Insiders 3 中默认启用
ubuntu·typescript·visual studio
ziguo112214 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
无垠的广袤14 小时前
【工业树莓派 CM0 Dev Board】扩展板设计
linux·python·嵌入式硬件·pcb设计·模块化·传感器
会编程的土豆15 小时前
MySQL 入门:库、表、行、主键是什么
linux·数据库·网络协议·http
砍材农夫16 小时前
运维|devops|jenkins构建应用发布
运维·jenkins·devops