这篇记录的是在 RackNerd Ubuntu 24.04 VPS 上搭建一个可从 Windows 远程桌面连接的 Linux 图形桌面环境的完整过程。最终方案是:Ubuntu 服务器上安装 XFCE + xrdp,Windows 端使用系统自带的“远程桌面连接”输入 VPS IP、用户名和密码登录。

这不是把 VPS 变成真正的高性能云电脑。它更适合临时打开网页、调试服务、查看图形界面程序,或者在服务器上完成一些偶尔需要 GUI 的操作。

最终使用的结构

最终链路是:

1
2
3
4
5
Windows 远程桌面连接
-> 107.172.191.70:3389
-> VPS 上的 xrdp
-> XFCE 桌面
-> 用户 raymondguo

服务器上同时还跑着其他项目,例如 nginx、Docker、new-api、CLIProxyAPI 等。所以这次桌面环境的处理重点不是“能装上就行”,而是尽量只动桌面相关组件,不影响已有服务。

最终确认过的关键点:

1
2
3
4
5
nginx 继续监听 80/443
new-api 继续只绑定 127.0.0.1:3000
Docker 继续运行
xrdp 监听 3389
桌面用户使用 raymondguo,而不是 root

先安装桌面环境

Ubuntu Server 默认没有图形界面。这里选 XFCE,是因为它比 GNOME/KDE 更轻,适合 VPS。

核心组件包括:

1
2
apt update
apt install -y xfce4 xfce4-goodies xrdp xorgxrdp dbus-x11

然后让普通用户登录时启动 XFCE:

1
2
echo 'startxfce4' > /home/raymondguo/.xsession
chown raymondguo:raymondguo /home/raymondguo/.xsession

xrdp 服务启用:

1
2
systemctl enable --now xrdp
systemctl restart xrdp

如果日志里出现 xrdp 读不到证书私钥,例如:

1
Cannot read private key file /etc/xrdp/key.pem: Permission denied

需要把 xrdp 用户加入 ssl-cert 组:

1
2
adduser xrdp ssl-cert
systemctl restart xrdp

连接方式:SSH 隧道和公网 3389

最开始更安全的方式是 SSH 隧道:

1
Windows mstsc -> 127.0.0.1:3390 -> SSH tunnel -> VPS 127.0.0.1:3389 -> xrdp

这种方式的优点是 3389 不需要暴露公网,安全性更好。缺点是每次连接都依赖本地 SSH 隧道,隧道断了,远程桌面也就连不上。

后来为了更接近常见 VPS 教程里的使用方式,改成公网直接连接:

1
Windows mstsc -> 107.172.191.70:3389 -> xrdp

xrdp 配置里关键是让它监听公网端口:

1
port=3389

如果看到类似下面这种配置,就说明它只监听本机回环地址,外部连不上:

1
port=tcp://127.0.0.1:3389

改完后重启:

1
2
systemctl restart xrdp
ss -lntup | grep 3389

能看到 0.0.0.0:3389*:3389,才表示公网连接有机会进来。

防火墙与安全提醒

如果使用 UFW,需要放行 3389:

1
2
ufw allow 3389/tcp
ufw status

更安全的做法是只允许自己的公网 IP:

1
ufw allow from <你的公网IP> to any port 3389 proto tcp

这次为了方便直接连接,最终使用了公网开放 3389。这个方式能用,但安全性低于 SSH 隧道或 IP 白名单。长期使用建议至少做到:

  • 不使用弱密码;
  • 不用 root 登录图形桌面;
  • 优先限制来源 IP;
  • 或者改回 SSH 隧道方式。

Windows 端怎么连接

Windows 端直接打开系统自带的“远程桌面连接”,也就是 mstsc.exe

电脑栏输入:

1
107.172.191.70

用户名输入:

1
raymondguo

密码输入对应 Linux 用户密码。

如果之前 Windows 远程桌面记住了错误用户名,比如默认填成 root,可以在登录窗口里点“更多选项 / 使用其他帐户”,手动输入:

1
raymondguo

也可以在 Windows 凭据管理器里删除 TERMSRV/107.172.191.70 相关的旧凭据。

为什么不建议用 root 登录 xrdp

root 登录 xrdp 经常失败,即使密码正确也可能进不去。这不是远程桌面坏了,而是 Linux 图形会话、PAM、安全策略和桌面环境通常都不推荐 root 图形登录。

正确做法是创建普通用户,例如:

1
2
adduser raymondguo
usermod -aG sudo raymondguo

然后用这个普通用户登录远程桌面。需要管理员操作时,再在终端里使用 sudo

安装 Chrome 后遇到 keyring 卡住

桌面装好后,系统自带浏览器不一定好用,所以又安装了 Google Chrome。

Chrome 在 Linux 桌面里可能触发一个提示:

1
Choose password for new keyring

在普通本地 Linux 桌面上,这个提示通常没什么问题。但在 xrdp 里,它可能让桌面看起来卡住,Chrome 打不开,甚至远程会话无响应。

这次最终处理方式是移除会触发这个流程的组件,并清理用户 Chrome/keyring 状态:

1
2
3
4
5
apt remove -y gnome-keyring evolution-data-server
rm -rf /home/raymondguo/.local/share/keyrings
rm -rf /home/raymondguo/.config/google-chrome
rm -rf /home/raymondguo/.cache/google-chrome
chown -R raymondguo:raymondguo /home/raymondguo

如果只是临时绕过,也可以给 Chrome 启动参数加:

1
2
3
4
5
--password-store=basic
--disable-gpu
--disable-dev-shm-usage
--no-first-run
--no-default-browser-check

但在这次环境里,最终更干净的做法是直接移除 keyring 相关包。

桌面慢的真实原因

这类 VPS 远程桌面慢,不一定是 CPU 或内存不够。实际验证时,服务器资源并不是主要瓶颈。

更明显的瓶颈是:

1
2
3
4
5
6
Windows 本地网络
-> 跨境线路
-> VPS 公网
-> xrdp 协议
-> 虚拟 Xorg 桌面
-> Chrome 软件渲染

尤其是 Windows 远程桌面分辨率开到 2560x1440、颜色质量较高时,体验会明显变慢。

更实用的设置是:

1
2
3
分辨率:1366x768 或 1600x900
颜色:16-bit 或较低颜色质量
关闭桌面背景、动画、主题效果

如果只是需要偶尔操作网页,xrdp 足够。如果希望长期当云电脑使用,NoMachine、Sunlogin/向日葵、RustDesk 这类方案可能体验更接近“远控软件”,但 VPS 没有真实显示器和独立 GPU,浏览器和视频类场景仍然不能期待太高。

重装时要保护已有服务

这次 VPS 上不只有远程桌面,还有 nginx、Docker、new-api、CPA 等服务。因此重装桌面组件时要避免粗暴清理系统。

安全边界是:

1
2
3
可以动:xfce4、xrdp、xorgxrdp、Chrome、raymondguo 的桌面配置
不要动:/etc/nginx、Docker 容器、/opt/new-api、线上反代配置
不要执行:docker system prune

每次操作前后都应该验证:

1
2
3
systemctl is-active nginx docker xrdp
ss -lntup | grep -E ':80|:443|:3000|:3389'
curl -fsS http://127.0.0.1:3000/api/status

这样可以确认桌面环境的调整没有误伤生产服务。

最终结论

RackNerd Ubuntu VPS 可以通过 XFCE + xrdp 做出一个可用的远程桌面。最终能跑通的关键不是单纯安装桌面,而是把下面几个点处理干净:

  1. xrdp 必须正确监听连接端口;
  2. 用普通用户 raymondguo 登录,不用 root;
  3. .xsession 明确启动 startxfce4
  4. Chrome 的 keyring 提示要处理,否则桌面可能卡死;
  5. Windows 远程桌面分辨率不要开太高;
  6. 如果公网开放 3389,要意识到安全风险,长期建议加 IP 白名单或改回 SSH 隧道。

这个方案适合“偶尔需要一个 Linux 图形界面”的 VPS 使用场景。如果目标是顺滑浏览器、视频或长期云电脑体验,单纯 xrdp + VPS 并不是最优解。