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

相关推荐
鼎讯信通1 小时前
1024J冲击能量+三种放电模式:DLG-1高压发生器覆盖电缆故障全场景
运维·能源·信息与通信
图灵追慕者1 小时前
Nginx安裝以及配置顯示本地服務器文件夾
运维·nginx
超级赛博搬砖工1 小时前
SEO代理解析:成功搜索引擎抓取你需要了解的事项
大数据·运维·服务器·网络
换个昵称都难1 小时前
webrtc peerconnection_server 模块介绍
运维·服务器·webrtc
志栋智能1 小时前
超自动化安全的技术选型与架构设计指南
运维·安全·自动化
ai_coder_ai2 小时前
在自动化脚本中操作excel文件
运维·自动化·excel
Moshow郑锴2 小时前
Ubuntu用SDKMAN轻松管理多个Java 版本
java·ubuntu·sdkman
aFakeProgramer2 小时前
S-CORE Docker 环境
linux
TimberWill2 小时前
Docker使用总结
运维·docker·容器