努力
加油

如何在命令行Ubuntu系统中配置远程桌面访问?

在纯命令行环境(CLI)的 Ubuntu 上配置远程桌面,核心思路其实就两条:安装远程桌面协议服务 + 放行防火墙端口。

这里有个概念需要先厘清:Linux 原生常用的远程方式其实是 SSH(终端),但如果你需要的是图形化界面(GUI),也就是 Windows 用户习惯的“远程桌面”体验,通常有两种主流方案:

  1. XRDP:最接近 Windows RDP 的体验,兼容性好,适合大多数场景。
  2. VNC (如 TigerVNC):开源标准,跨平台能力强,但配置稍繁琐,且安全性默认较弱,需配合 SSH 隧道使用。

鉴于国内云服务器的普遍需求,我推荐优先使用 XRDP,因为它配置简单,直接用 Windows 自带的“远程桌面连接”就能连上来,不用装额外客户端。

以下是基于 Ubuntu 20.04/22.04 LTS 的标准操作流程:

第一步:更新系统并安装 XRDP

登录你的 Ubuntu 服务器,执行以下命令:

sudo apt update
sudo apt install xrdp -y

安装完成后,XRDP 服务通常会自启动。你可以检查状态确认是否运行正常:

sudo systemctl status xrdp

如果看到 active (running),说明服务已就绪。

第二步:配置图形会话后端(关键步骤)

Ubuntu 默认使用 GNOME 桌面环境。XRDP 默认配置可能无法正确启动 GNOME 会话,导致你连上去后黑屏或闪退。我们需要指定 XRDP 使用正确的会话管理器。

编辑 /etc/xrdp/startwm.sh 文件:

sudo nano /etc/xrdp/startwm.sh

在文件末尾添加以下内容(确保在 test -x /etc/X11/Xsession 之前):

# 针对 Ubuntu 20.04+ 和 GNOME 3.x
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
export DESKTOP_SESSION=ubuntu
export GDMSESSION=ubuntu

# 启动 session manager
. /etc/X11/Xsession

注意:如果你使用的是 XFCE 桌面(很多云服务器默认是 XFCE 或无桌面),则不需要改这个文件,或者将 startwm.sh 中的内容替换为 xfce-session 相关的启动脚本。但对于绝大多数新手,上述 GNOME 配置能解决大部分“黑屏”问题。

保存并退出(Ctrl+O, Enter, Ctrl+X)。

然后重启 XRDP 服务使配置生效:

sudo systemctl restart xrdp

第三步:配置防火墙

这是最容易踩坑的地方。你需要允许 TCP 3389 端口通过防火墙。

如果你的 Ubuntu 启用了 ufw(Uncomplicated Firewall):

sudo ufw allow 3389/tcp
sudo ufw reload

如果你是在阿里云、腾讯云、华为云等国内主流厂商的 ECS/CVM 上操作,仅仅配置服务器内部防火墙是不够的。你必须去云控制台的 “安全组” 规则中,添加入方向规则:

  • 协议:TCP
  • 端口范围:3389
  • 授权对象:0.0.0.0/0 (或者限制为你自己的 IP 段,更安全)

重要提示:国内云厂商对非标准端口或非 SSH/RDP 端口的管控较严,部分账号可能需要提交工单申请开通 3389 端口,具体请以控制台提示为准。

第四步:连接测试

现在,在你的本地 Windows 电脑上:

  1. 按 Win + R,输入 mstsc 打开远程桌面连接。
  2. 输入 Ubuntu 服务器的公网 IP 地址。
  3. 点击连接。
  4. 弹出 XRDP 登录窗口时:
    • Session: 选择 Xvnc 或 Xorg(建议先试 Xorg,如果不成功再试 Xvnc)。
    • Username: 你的 Ubuntu 用户名。
    • Password: 对应的密码。

如果能成功进入桌面,说明配置完成。


常见问题与避坑指南

1. 登录后黑屏或白屏

这通常是权限或会话冲突问题。

  • 解决方法:注销当前用户。XRDP 不允许同一用户同时从本地和远程登录。如果你已经在物理机或控制台登录了该用户,远程连接会失败。请先在服务器上执行 sudo pkill -u <username> 杀掉对应用户的进程,然后再尝试远程连接。

2. 中文乱码

如果远程桌面里中文显示为方块,是因为缺少中文字体支持。

  • 解决方法:
    sudo apt install fonts-wqy-microhei fonts-wqy-zenhei -y
    sudo fc-cache -fv
    sudo systemctl restart xrdp

3. 性能卡顿

XRDP 基于 RDP 协议,带宽占用较低,但如果网络质量差,画面依然会卡。

  • 优化建议:在 Windows 远程桌面连接的“选项” -> “显示”中,将颜色深度改为“高色 (16位)”;在“体验”标签页中,勾选“网络连接类型为宽带”,取消勾选“持久缩略图”等耗资源选项。

4. 关于 VNC 的备选方案

如果你发现 XRDP 不稳定,或者需要更底层的屏幕共享(比如用于监控摄像头画面而非办公),可以考虑安装 TigerVNC Server:

sudo apt install tigervnc-standalone-server tigervnc-common
vncpasswd  # 设置密码
vncserver :1  # 启动实例

然后通过 VNC Viewer 连接 IP:5901。但请注意,VNC 默认不加密,务必通过 SSH 隧道转发端口,否则密码可能被嗅探。

总结

对于国内云服务器用户,XRDP + 安全组放行 3389 端口 是最省心、兼容性最好的方案。记住两个关键点:修改 startwm.sh 避免黑屏,以及检查云平台安全组规则。配置完成后,你就能像操作本地电脑一样,通过远程桌面管理你的 Linux 服务器了。