Chat
Ask me anything
Ithy Logo

解决 Ubuntu RDP 连接在锁屏时断开的问题

维护 Ubuntu 远程桌面连接的持久性

solve-ubuntu-rdp-lock-disconnect-g6c5dk0m

在使用 Microsoft 的远程桌面连接工具 (mstsc) 连接到 Ubuntu 系统时,许多用户会遇到一个常见的问题:当 Ubuntu 系统的屏幕锁定后,RDP 连接会自动中断。这会极大地影响远程管理的便利性,尤其是在需要长时间保持连接或者在无人值守的情况下进行操作时。

本文将深入探讨导致此问题的原因,并提供多种有效的解决方案,帮助您在 Ubuntu 锁屏或屏幕关闭时仍然能够维持稳定的 RDP 连接。

核心洞察:为什么 Ubuntu RDP 会在锁屏时断开?

  • 默认行为:Ubuntu 的内置远程桌面功能(通常基于 GNOME Remote Desktop)在屏幕锁定后会中断 RDP 会话,这是其默认的安全设置,旨在防止未经授权的访问。
  • XRDP 的替代方案:除了内置的远程桌面功能,XRDP 是另一个流行的在 Linux 上实现 RDP 服务器的工具。虽然 XRDP 在某些情况下可以提供更灵活的会话管理,但也可能遇到在屏幕锁定或会话断开后无法保持会话的问题。
  • Gnome 扩展或 XRDP 配置:解决此问题的常见方法包括安装特定的 GNOME 扩展来修改默认的锁屏行为,或者调整 XRDP 的配置设置以允许会话持续。

理解 Ubuntu 的远程桌面选项

Ubuntu 提供了几种进行远程访问的方式,其中最常见的是内置的 GNOME Remote Desktop 和第三方工具 XRDP。了解它们的区别有助于选择合适的解决方案。

内置 GNOME Remote Desktop

从 Ubuntu 22.04 开始,GNOME 桌面环境集成了对 RDP 协议的支持。通过“设置”中的“远程桌面”选项可以启用此功能。这种方法通常易于设置,但正如您所遇到的,其默认行为是在锁屏时中断连接。

这主要出于安全考虑,确保在本地会话被锁定时,远程会话也无法被访问,除非进行额外的身份验证。然而,对于需要持续远程访问的用户来说,这成为一个不便之处。

以下是启用 Ubuntu 内置远程桌面的一个示例界面:

Ubuntu 内置远程桌面设置

Ubuntu built-in Remote Desktop settings

XRDP

XRDP 是一个开源的 RDP 服务器实现,允许 Windows 用户通过 RDP 客户端连接到 Linux 桌面。与内置的 GNOME Remote Desktop 不同,XRDP 通常提供更细粒度的控制,并且可以配置为支持多种桌面环境。

然而,安装和配置 XRDP 可能比使用内置功能稍微复杂一些。此外,XRDP 也可能面临会话管理的问题,特别是在与某些桌面环境结合使用时。

解决 Ubuntu RDP 锁屏断开的方案

针对 Ubuntu RDP 在锁屏时断开的问题,有几种主要的解决方法,具体取决于您使用的是内置的 GNOME Remote Desktop 还是 XRDP。

针对内置 GNOME Remote Desktop

安装并启用“Allow Locked Remote Desktop” GNOME 扩展

这是解决 Ubuntu 22.04 及更高版本内置 RDP 锁屏断开问题的最常见且推荐的方法之一。这个 GNOME 扩展专门设计用于在屏幕锁定状态下保持 RDP 连接。

安装步骤如下:

  1. 在 Ubuntu 系统上,打开“Extension Manager”应用程序。如果您没有安装它,可以在终端中运行以下命令安装:
    sudo apt update
    sudo apt install gnome-shell-extension-manager
  2. 打开 Extension Manager,搜索“Allow Locked Remote Desktop”。
  3. 找到该扩展后,点击安装按钮进行安装。
  4. 安装完成后,确保该扩展已启用。您可以在 Extension Manager 中找到已安装的扩展列表并进行管理。

安装并启用此扩展后,即使 Ubuntu 系统锁屏,RDP 连接也应该能够保持活动状态。

搜索并安装 Allow Locked Remote Desktop 扩展

Searching and installing Allow Locked Remote Desktop extension

调整屏幕锁定设置

虽然这不是直接保持 RDP 连接的方法,但延长屏幕锁定时间或禁用自动屏幕锁定可以在一定程度上缓解问题,尤其是在短暂离开时。然而,这会降低系统的安全性,不建议在公共或不信任的网络环境中使用。

您可以在 Ubuntu 的“设置” -> “隐私与安全” -> “屏幕锁定”中调整相关设置。

针对 XRDP

配置 XRDP 会话管理

如果您使用 XRDP,您可能需要调整其配置以保持会话。一个常见的配置项是 sesman.ini 文件中的 KillDisconnected 参数。

在较旧的 XRDP 版本中,将其设置为 0 可以防止在断开连接时终止会话。然而,在较新的版本中,此设置的行为可能有所不同,并且可能需要其他配置或使用特定的会话类型。

通常,您需要编辑 /etc/xrdp/sesman.ini 文件。请注意,编辑系统文件需要管理员权限。

sudo nano /etc/xrdp/sesman.ini

在文件中找到 [Sessions] 部分,检查或修改 KillDisconnected 参数。根据您的 XRDP 版本和需求进行调整。

需要注意的是,尝试连接已在本地登录的同一用户帐户可能会导致 XRDP 立即断开连接。在连接之前确保目标用户已从本地会话注销可以解决此问题。

检查 XRDP 日志

如果 XRDP 连接出现问题,查看 XRDP 的日志文件(通常在 /var/log/xrdp.log~/.xorgxrdp.*.log)可以帮助诊断问题。日志中可能会包含有关连接失败或断开原因的详细信息。

考虑使用 LightDM 或其他显示管理器

有时,XRDP 与某些显示管理器(如 GDM3)的兼容性问题可能导致连接不稳定。尝试更换为 LightDM 或其他显示管理器可能会有所帮助。

重新安装 XRDP

如果 XRDP 配置或安装出现问题,尝试完全卸载并重新安装 XRDP 及其相关的组件(如 xorgxrdp)可能会解决问题。

其他可能的解决方案和故障排除

检查网络连接和防火墙

不稳定的网络连接或防火墙规则问题也可能导致 RDP 连接断开。确保客户端和服务器之间的网络连接稳定,并且防火墙允许 RDP 流量(通常是 TCP 端口 3389)。

客户端设置

有时,客户端的 RDP 设置也可能影响连接的稳定性。例如,尝试在 mstsc 的连接设置中调整显示、本地资源或体验等选项。

还有用户报告称,在 Windows 客户端的 RDP 设置中禁用“Smart cards or Windows Hello for Business”选项有助于解决断开问题。

处理无头系统问题

如果您连接的是一个没有连接物理显示器的无头 Ubuntu 系统,可能会遇到连接问题。有时,断开物理显示器可能导致远程连接终止。在这种情况下,可能需要特殊的配置或使用虚拟显示器。

连接到无头 Ubuntu 系统

Connecting to a headless Ubuntu system

用户会话问题

如前所述,尝试使用已经在本地登录的用户帐户进行 RDP 连接可能会导致问题。确保远程连接使用的用户帐户没有同时在本地登录。

版本兼容性

Ubuntu 和 RDP 相关的软件包(如 XRDP 和 FreeRDP)的版本兼容性会影响远程连接的稳定性。例如,Ubuntu 24.04 中的内置 RDP 功能在会话持久性方面有所改进(GNOME 47),但可能仍然存在特定的兼容性问题,如连接失败并显示“disconnect reason = 2”。

下表总结了不同 Ubuntu 版本和 RDP 相关的会话持久性:

Ubuntu 版本 内置 RDP (GNOME Remote Desktop) XRDP 会话持久性在断开后
Ubuntu 22.04 LTS 支持 RDP 支持 默认情况下,内置 RDP 在锁屏或断开时会终止会话。XRDP 可能需要配置。
Ubuntu 24.04 LTS 支持 RDP (GNOME 46) 支持 内置 RDP 默认不会保持会话。XRDP 可能需要配置。可能会遇到连接问题 (disconnect reason = 2)。
Ubuntu 24.10 (及更高版本) 支持 RDP (GNOME 47) 支持 内置 RDP (GNOME 47) 改进了会话持久性,断开后会话可以持续。XRDP 也支持。

请注意,Ubuntu 24.10 是一个非 LTS 版本,仅支持 9 个月。对于需要长期稳定性的用户,建议使用 LTS 版本(如 22.04 或未来的 26.04)。

视频演示

以下视频演示了如何在 Ubuntu 22.04 中配置 VNC 和 RDP,并提到了锁定屏幕的解决方法:

该视频展示了如何在 Ubuntu 22.04 中启用远程访问以及处理锁屏对远程连接的影响,对理解和解决相关问题非常有帮助。


常见问题解答 (FAQ)

安装“Allow Locked Remote Desktop”扩展后,RDP 连接仍然在锁屏时断开怎么办?

确保您已正确安装并启用了该扩展。尝试重启 GNOME Shell (按 Alt + F2,输入 'r',然后按 Enter,或注销并重新登录) 或重新启动 Ubuntu 系统。检查 Extension Manager,确认扩展的状态。有时,可能是由于其他系统配置或冲突导致扩展无法正常工作。

XRDP 连接总是立即断开,即使输入了正确的密码,是什么原因?

这通常是由于您尝试使用的用户帐户已经在 Ubuntu 系统上本地登录造成的。XRDP 默认情况下不允许同一用户同时进行本地和远程会话。解决方法是在尝试 RDP 连接之前,从 Ubuntu 系统上注销该用户。

如何确定我使用的是 Ubuntu 内置的 RDP 还是 XRDP?

如果您是在 Ubuntu 的“设置”->“远程桌面”中启用了共享功能,那么您使用的是内置的 GNOME Remote Desktop。如果您是通过在终端中安装了 xrdp 软件包并进行了额外配置,那么您使用的是 XRDP。

如何在 headless (无头) Ubuntu 服务器上实现稳定的 RDP 连接?

在无头服务器上实现稳定的 RDP 可能需要额外的配置。使用 XRDP 并确保正确配置 XRDP 会话,可能还需要安装和配置虚拟显示器驱动。检查相关的 XRDP 日志可以帮助诊断问题。

我使用的是 Ubuntu 24.04,连接时遇到“disconnect reason = 2”错误,如何解决?

对于 Ubuntu 24.04,如果您使用特定的 RDP 客户端(如 Royal TSX 或 FreeRDP 较旧版本),可能会遇到此错误。尝试在客户端设置中激活“Use Redirection Server Name”选项,或者使用支持新版本 FreeRDP 的 RDP 客户端。


总结

Ubuntu RDP 连接在锁屏时断开的问题是一个常见挑战,但通过合适的配置和工具可以有效解决。对于使用内置 GNOME Remote Desktop 的用户,安装“Allow Locked Remote Desktop” GNOME 扩展是最直接的解决方案。对于使用 XRDP 的用户,检查并调整 XRDP 配置文件(特别是 sesman.ini)和确保用户未在本地登录是关键。理解不同 Ubuntu 版本和 RDP 实现的行为差异也有助于故障排除。

参考资料


Last updated May 13, 2025
Ask Ithy AI
Download Article
Delete Article