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发布。

相关推荐
程序员AlbertTu7 小时前
第2章 上手 Linux:环境与文件操作
linux·运维·服务器
☆凡尘清心☆7 小时前
CentOS Stream 9 源码编译搭建 Zabbix7.0.29 完整部署方案(部署成功)
linux·运维·centos
Escalating_xu7 小时前
【Linux】进程间通信:从匿名管道、FIFO 到共享内存、消息队列与信号量
java·linux·面试
予昊8 小时前
Linux 资源控制实战分析:用 LXC 亲手造一个 “迷你虚拟机“
linux·运维·服务器
allforgood8 小时前
管理网络安全
linux
xiaoxiangsiyan8 小时前
RHCE之2026年全套考点详解
运维·前端·网络·chrome·学习·rhce
love530love8 小时前
彻底清理 Windows 右键“打开方式“中的重复/失效程序项(PyCharm 多版本残留实战 + 自动化脚本)
运维·人工智能·windows·pycharm·jetbrains·toolbox
zhexunnb8 小时前
SAP赋能芯片封装行业,打造封测企业全链路数字化底座
运维
蓝速科技8 小时前
蓝速科技会议预约屏深度评测:为何安卓系统是智慧办公长期最优解
运维·人工智能·科技
2401_834636998 小时前
保姆级 K8s 运维:RBAC 认证 + Dashboard+Local/NFS 动态卷实战
运维·容器·kubernetes