在开始配置远程桌面之前,请确保以下条件已满足:
sudo
命令)。ip addr show
或 hostname -I
命令来查找。较新版本的 Ubuntu(特别是 Ubuntu 22.04 Jammy Jellyfish 及更高版本)内置了基于 RDP 协议的远程桌面共享功能。此功能集成在 GNOME 桌面环境中,设置相对简单。
在 Ubuntu 设置中激活共享功能
在 Ubuntu 22.04 设置中启用并配置远程桌面共享
xRDP 是一个开源的远程桌面协议 (RDP) 服务器,它允许非 Windows 操作系统(如 Linux 发行版 Ubuntu)接受来自 Windows 远程桌面客户端 (mstsc.exe) 以及其他 RDP 客户端的连接。xRDP 对于所有 Ubuntu 版本都是一个可靠的选择,尤其是在内置方案不适用或需要更高级配置时。
首先,打开终端(Ctrl+Alt+T)并更新您的软件包列表,以确保获取最新的软件版本信息:
sudo apt update
然后,安装 xRDP 软件包。-y
参数会自动确认安装提示:
sudo apt install xrdp -y
安装完成后,xRDP 服务通常会自动启动并设置为开机自启。您可以使用以下命令检查其状态:
sudo systemctl status xrdp
如果服务正在运行,您会看到 "active (running)" 的字样。如果未运行,您可以手动启动并设置为开机自启:
sudo systemctl start xrdp
sudo systemctl enable xrdp
如果您的 Ubuntu 系统启用了 UFW (Uncomplicated Firewall) 防火墙,您需要允许 RDP 协议的默认端口 3389/tcp 通过防火墙:
sudo ufw allow 3389/tcp
sudo ufw reload
如果您更改了 xRDP 的监听端口,请确保在这里允许新的端口号。
xRDP 需要知道在用户连接时应该启动哪个桌面环境。默认情况下,它可能尝试启动 Ubuntu 的标准桌面 (GNOME),但这有时会导致问题,如著名的“黑屏”问题。为了获得更稳定和流畅的体验,通常推荐以下几种做法:
安装 XFCE 及相关组件:
sudo apt install xfce4 xfce4-goodies -y
配置 xRDP 使用 XFCE 作为默认会话。创建一个名为 .xsession
的文件在您的用户主目录下,并写入启动 XFCE 的命令:
echo "xfce4-session" > ~/.xsession
或者,您可以修改全局的 xRDP 启动脚本 /etc/xrdp/startwm.sh
。注释掉文件末尾原有的测试和执行 Xsession 的行,并添加启动 XFCE 的命令。但更推荐使用用户级别的 ~/.xsession
配置。
如果您坚持使用 GNOME 桌面,可能需要进行额外的配置。确保您已从本地的 GNOME 会话中注销,因为 xRDP 通常无法很好地处理与活动本地会话的并发(特别是同一用户)。
有时需要修改 /etc/xrdp/startwm.sh
文件,在文件末尾的 test -x /etc/X11/Xsession && exec /etc/X11/Xsession
之前,添加一些环境变量设置来帮助 GNOME 正确启动,例如:
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
重要提示:这些针对 GNOME 的配置可能因 Ubuntu 版本和具体更新而异,并且有时不够稳定。使用 XFCE 通常是更可靠的选择。
连接 xRDP 时,可能会看到一个登录界面,您可以在此输入用户名和密码,有时还可以选择会话类型。
这是 xRDP 用户常遇到的问题,通常与会话管理、权限或桌面环境配置不当有关。
/etc/polkit-1/rules.d/02-allow-colord.rules
(文件名可自定义,但需以 .rules
结尾) 并添加以下内容:
polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.color-manager.create-device" ||
action.id == "org.freedesktop.color-manager.create-profile" ||
action.id == "org.freedesktop.color-manager.delete-device" ||
action.id == "org.freedesktop.color-manager.delete-profile" ||
action.id == "org.freedesktop.color-manager.modify-device" ||
action.id == "org.freedesktop.color-manager.modify-profile") &&
subject.isInGroup("{users}")) { // 使用 {users} 适用于所有普通用户,或特定用户组如 "sudo"
return polkit.Result.YES;
}
});
然后重启 Polkit 服务和 xRDP 服务:
sudo systemctl restart polkit
sudo systemctl restart xrdp
/var/log/xrdp.log
和 /var/log/xrdp-sesman.log
(或者在 ~/.xorgxrdp.log
) 包含了详细的错误信息,可以帮助诊断问题。为了帮助您快速决策,下表总结了 Ubuntu 内置 RDP (GNOME 共享) 和 xRDP 服务器的主要特点和适用场景。
特性 | Ubuntu 内置 RDP (GNOME 共享) | xRDP 服务器 |
---|---|---|
主要适用版本 | Ubuntu 22.04 及更新版本 (原生 RDP 支持更佳) | 所有 Ubuntu 版本,通用性强 |
安装配置 | 简单,通过系统设置启用 | 需要手动安装软件包,可能涉及命令行配置 |
桌面环境兼容性 | 主要为 GNOME 设计,对 Wayland 支持较好 | 可配合多种桌面环境 (XFCE, MATE, GNOME 等),Xorg 下更稳定 |
会话类型 | 通常为屏幕共享 (控制当前活动会话) | 可创建独立的虚拟会话,支持多用户并发 |
性能 | 依赖 GNOME 性能,可能较重 | 配合轻量级桌面 (如 XFCE) 时性能较好 |
灵活性与定制 | 选项相对较少 | 配置选项丰富,灵活性高 |
常见用途 | 快速、临时的个人桌面访问 | 需要稳定、多用户或特定桌面环境的远程访问 |
选择哪种方法取决于您的具体需求,例如 Ubuntu 版本、期望的易用性、性能要求以及是否需要多用户支持等。对于 Ubuntu 22.04+ 的用户,可以首先尝试内置的 RDP 功能;如果遇到问题或需要更高级的配置,xRDP 始终是一个可靠的选择。
为了帮助您更好地理解 Ubuntu 内置 RDP 功能和 xRDP 之间的差异,以下雷达图比较了它们在几个关键方面的表现。请注意,这些评估是基于一般用户体验和常见反馈,具体表现可能因您的系统配置和网络环境而异。
图表解读:
一旦您在 Ubuntu 上成功配置了 RDP 服务(无论是内置功能还是 xRDP),就可以从 Windows 机器上连接了。步骤如下:
Windows 远程桌面连接对话框,输入 Ubuntu IP 地址
下面的思维导图清晰地展示了从 Ubuntu 端配置到 Windows 端连接的整个流程,帮助您更好地理解各个环节及其相互关系。
ip addr
或 hostname -I
"]
id1_3["选择 RDP 实现方案"]
id1_3_1["内置 RDP (GNOME 共享)"]
id1_3_1_1["适用: Ubuntu 22.04+"]
id1_3_1_2["操作: 设置 -> 共享 -> 远程桌面"]
id1_3_1_3["配置: 启用, 设置凭据"]
id1_3_1_4["注意: Wayland/Xorg 切换可能需要"]
id1_3_2["xRDP 服务器"]
id1_3_2_1["适用: 所有 Ubuntu 版本, 通用性强"]
id1_3_2_2["安装: sudo apt install xrdp
"]
id1_3_2_3["服务: sudo systemctl start/enable xrdp
"]
id1_3_2_4["防火墙: sudo ufw allow 3389/tcp
"]
id1_3_2_5["桌面环境配置"]
id1_3_2_5_1["推荐: 安装 XFCE (sudo apt install xfce4
)"]
id1_3_2_5_2["配置会话: echo 'xfce4-session' > ~/.xsession
"]
id1_3_2_5_3["可选: GNOME (配置较复杂, 可能需改 startwm.sh
)"]
id1_3_2_6["故障排除: 黑屏, Polkit 规则"]
id2["Windows 端连接操作"]
id2_1["打开“远程桌面连接” (mstsc.exe)"]
id2_2["输入 Ubuntu IP 地址/主机名"]
id2_3["点击“连接”"]
id2_4["处理安全警告 (如有)"]
id2_5["身份验证"]
id2_5_1["输入 Ubuntu 用户名和密码"]
id2_5_2["xRDP 可能有会话选择界面"]
id2_6["成功连接 -> 显示 Ubuntu 桌面"]
id3["关键考量因素"]
id3_1["网络连通性与稳定性"]
id3_2["防火墙规则正确配置"]
id3_3["用户凭据准确无误"]
id3_4["安全性增强"]
id3_4_1["强密码策略"]
id3_4_2["系统及时更新"]
id3_4_3["考虑 VPN 或 SSH 隧道"]
id3_5["会话管理 (尤其 xRDP)"]
id3_5_1["注销本地会话避免冲突"]
此思维导图总结了配置 Ubuntu 以便通过 RDP 从 Windows进行远程访问的关键步骤和考虑因素。它涵盖了从初始准备、选择和配置 Ubuntu 上的 RDP 服务(内置或 xRDP),到最终从 Windows 客户端发起连接的整个过程。同时,它也强调了网络、防火墙、凭据和安全性的重要性。
理论结合实践是学习的最佳途径。下面的视频教程详细演示了如何在 Ubuntu 20.04 上安装和配置 xRDP 以便从 Windows 10 进行远程桌面访问。尽管视频中的 Ubuntu 版本是 20.04,但其核心概念和许多步骤对于较新版本的 Ubuntu(如 22.04 或 24.04)在选择使用 xRDP 方案时仍然具有很高的参考价值。
该视频《Ubuntu 20.04 Remote Desktop Access from Windows 10 with xRDP》逐步展示了:
观看此视频可以帮助您更直观地理解 xRDP 的安装和配置过程,特别是命令行的实际操作和可能遇到的界面,从而补充本文档中的文字说明,使整个学习过程更加生动和易于理解。
成功建立远程桌面连接后,您可能希望进一步优化性能并增强连接的安全性。
xrdp.ini
):如果您使用的是 xRDP,可以编辑其主配置文件 /etc/xrdp/xrdp.ini
。
max_bpp
(maximum bits per pixel):将其值从默认的 32 降低到 24 或 16,可以减少带宽消耗。例如:max_bpp=24
。crypt_level
(加密级别):low
, medium
, high
。较低的加密级别可能会略微提高性能,但会降低安全性。通常建议保持 high
或 medium
。use_compression
和相关压缩设置。sudo systemctl restart xrdp
。
sudo apt update && sudo apt full-upgrade -y
192.168.1.100
访问:
sudo ufw allow from 192.168.1.100 to any port 3389 proto tcp
如果可能,避免将 RDP 端口直接暴露在公共互联网上。
/etc/xrdp/xrdp.ini
文件,修改 port=3389
为其他未被使用的端口号(例如 port=3390
)。IP_ADDRESS:NEW_PORT
)。
33890
转发到 Ubuntu 服务器的 127.0.0.1:3389
。
ssh -L 33890:127.0.0.1:3389 your_ubuntu_user@your_ubuntu_ip
localhost:33890
或 127.0.0.1:33890
。/var/log/auth.log
, /var/log/xrdp.log
)以发现任何可疑活动。