云服务器安装Ubuntu后如何配置VNC或XRDP实现桌面远程登录?

很多新手在买完云服务器(尤其是 Ubuntu 系统)后,发现只有黑乎乎的命令行界面,想装个图形化软件或者远程连进去操作桌面,结果一脸懵。

其实核心就两步:先有桌面环境,再开远程通道。别一上来就急着装 VNC 或 XRDP,如果连桌面都没有,装了也是白搭。

下面我把最稳妥、坑最少的方法拆解开讲。全程基于 Ubuntu 20.04/22.04 LTS,这是目前最稳定的版本。


第一阶段:安装桌面环境(基础中的基础)

大多数云服务器的 Ubuntu 镜像默认是 Server 版,没有图形界面。你必须先装一个轻量级的桌面环境。推荐 XFCE,因为它资源占用极低,适合配置不高的云服务器(比如 1核2G 这种)。

  1. SSH 登录服务器

    ssh root@你的服务器IP
  2. 更新源并安装 XFCE

    sudo apt update
    sudo apt install xfce4 xfce4-goodies -y

    注意:这一步可能需要几分钟,取决于你的网速和服务器性能。

  3. 安装中文支持(可选但强烈建议)
    防止乱码,装上中文字体和输入法框架:

    sudo apt install language-pack-zh-han* fonts-wqy-zenhei ibus ibus-clutter -y

第二阶段:选择远程方案(VNC vs XRDP)

这里有两个主流方案,各有优劣,根据你的需求选一个即可。

方案 A:XRDP(推荐 Windows 用户)

原理:模拟 RDP 协议,让你用 Windows 自带的“远程桌面连接”直接连进去。
优点:体验最接近原生 Windows 远程,无需额外客户端,带宽占用相对可控。
缺点:Ubuntu 下多用户会话管理偶尔会有小 bug(比如注销后卡死),需要一点配置。

配置步骤:

  1. 安装 XRDP

    sudo apt install xrdp -y
  2. 关键配置:解决启动问题
    Ubuntu 的 XRDP 默认配置在某些版本下会导致登录后黑屏或闪退。我们需要修改配置文件,强制使用 XFCE 会话。

    编辑 /etc/xrdp/startwm.sh

    sudo nano /etc/xrdp/startwm.sh

    在文件末尾 test -x /etc/X11/Xsession && exec /etc/X11/Xsession 这一行之前,插入以下两行代码(确保它先于其他执行):

    unset DBUS_SESSION_BUS_ADDRESS
    unset XDG_RUNTIME_DIR

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

  3. 重启 XRDP 服务

    sudo systemctl restart xrdp
    sudo systemctl enable xrdp
  4. 防火墙放行(重要!)
    云服务器通常默认关闭了 3389 端口。你需要去云厂商的控制台(阿里云/腾讯云/AWS等)的安全组里,添加一条规则:

    • 端口:3389
    • 协议:TCP
    • 来源:0.0.0.0/0(或者限制为你的固定 IP 更安全)
  5. 连接测试
    在你的 Windows 电脑上,搜索“远程桌面连接”,输入服务器 IP,用户名填你安装桌面时的普通用户(不要用 root,XRDP 对 root 支持不好,容易崩),密码是你设置的密码。

方案 B:VNC(推荐 Linux/Mac 跨平台用户)

原理:通过 VNC Server 传输画面。
优点:通用性强,任何设备都能连。
缺点:画质和流畅度略逊于 RDP,需要单独安装 VNC Viewer 客户端。

配置步骤:

  1. 安装 VNC Server
    推荐使用 tigervnc,性能好且活跃。

    sudo apt install tigervnc-standalone-server tigervnc-common -y
  2. 设置 VNC 密码
    以普通用户身份运行(再次强调,不要以 root 身份运行 VNC Server):

    vncpasswd

    按提示设置密码。

  3. 创建自动启动脚本
    为了让每次开机自动进入桌面并启动 VNC,我们需要创建一个 systemd 服务或者简单的启动脚本。这里用最简单粗暴的方式:修改 ~/.vnc/config 或者直接通过 xfce4-session 启动。

    更稳健的做法是编写一个简单的启动脚本 /home/你的用户名/start_vnc.sh

    #!/bin/bash
    startxfce4 &
    vncserver :1 -geometry 1920x1080 -depth 24

    赋予执行权限:

    chmod +x ~/start_vnc.sh

    注意:这种方式每次都需要手动运行脚本,或者将其加入 crontab @reboot。对于小白,我建议用下面的“系统级服务”方法更稳定。

    进阶稳定法(Systemd 服务):
    创建服务文件 /etc/systemd/system/vnc.service

    [Unit]
    Description=VNC Server for XFCE
    After=network.target
    
    [Service]
    Type=simple
    User=你的用户名
    ExecStart=/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24
    Restart=on-failure
    Environment="DISPLAY=:1"
    
    [Install]
    WantedBy=multi-user.target

    然后启用服务:

    sudo systemctl daemon-reload
    sudo systemctl enable vnc.service
    sudo systemctl start vnc.service
  4. 防火墙放行
    VNC 默认使用 5901 端口(因为我们在上面用了 :1)。
    去云厂商安全组开放 5901 端口,TCP 协议。

  5. 连接测试
    下载 VNC Viewer(RealVNC 或 TigerVNC),地址填写 服务器IP:5901,输入刚才设置的密码。


第三阶段:避坑指南与最佳实践

  1. 千万别用 Root 跑图形界面
    无论是 XRDP 还是 VNC,尽量用普通用户登录。Root 权限过大,一旦图形界面崩溃,可能导致整个系统会话异常。你可以用 sudo 提权来执行命令。

  2. 内存不足怎么办?
    如果你用的是 1G 或更低内存的机器,XFCE 可能会卡顿。建议在安装前 swap 分区至少 2G。

    fallocate -l 2G /swapfile
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  3. 安全性提醒

    • XRDP:3389 端口容易被暴力破解。建议配合 fail2ban 使用,或者只允许特定 IP 访问。
    • VNC:5901 端口同样危险。强烈建议不要直接暴露 VNC 端口到公网。最好的做法是建立 SSH 隧道:
      ssh -L 5901:localhost:5901 user@server_ip

      然后在本地 VNC Viewer 连接 localhost:5901。这样即使端口开着,黑客也连不上,除非他攻破了你的 SSH。

  4. 为什么不建议用 GNOME?
    GNOME 非常吃内存(起步就要 1GB+ RAM 和大量 CPU 资源),在低配云服务器上跑起来会非常卡,甚至导致 OOM(内存溢出)被系统杀掉进程。XFCE 或 LXDE 才是云服务器的正解。

总结

  • 想要最简单、像用电脑一样:选 XRDP + XFCE。
  • 想要跨平台、或者只是临时看一眼:选 VNC + XFCE。
  • 核心前提:先装好桌面环境,再装远程工具,最后开防火墙端口。

按照这个流程走,基本不会翻车。如果有具体报错,把错误日志贴出来,再针对性排查。

未经允许不得转载:云知道CLOUD » 云服务器安装Ubuntu后如何配置VNC或XRDP实现桌面远程登录?