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

相关推荐
程序开发阿元10 分钟前
1C1G 能跑什么:把留常驻服务和不留摆进一张内存表
linux·ssh
xbzb2 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮3 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
独隅3 小时前
WebStorm Linux 版安装实战与核心效能展示
linux·ide·webstorm
瑞克-桑切斯4 小时前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
江屿风4 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
我不会起名字3225 小时前
K8s 节点磁盘打满导致 Pod 被驱逐:4 类占用与回收顺序
运维·kubernetes·k8s·diskpressure·evicted
雪落漂泊5 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
瑞克-桑切斯5 小时前
docker mail商城
运维·docker·容器
AR-26710-6 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维