Featured image of post VPS 远程桌面访问方案:XRDP 与 NoMachine 配置指南

VPS 远程桌面访问方案:XRDP 与 NoMachine 配置指南

对比 XRDP 与 NoMachine 两种 VPS 远程桌面方案,详解配置步骤、性能调优与安全性设置,帮助你在 Linux VPS 上轻松实现图形化远程访问。

引言

大多数 VPS 教程都假设你只使用命令行操作,但在实际运维中,很多时候我们需要图形化界面——安装带 GUI 的软件、调试 Web 应用、查看可视化报表,甚至只是简单地用浏览器访问某个本地服务。

本文将详细介绍两种主流的 Linux 远程桌面方案:XRDP(开源、轻量)和 NoMachine(高性能、功能丰富),并给出完整的配置步骤和优化建议。


方案对比

特性XRDPNoMachine
协议RDP(微软远程桌面协议)NX(自研协议)
安装难度简单中等
性能一般,适合基本操作优秀,支持高清视频
带宽占用中等低,智能压缩
音频转发支持(需配置)原生支持
文件传输有限支持完善支持
多用户支持支持
免费版本完全免费免费版够用(最多 2 并发)
适合场景轻量远程管理高性能远程办公

方案一:XRDP 配置指南

1. 安装 XRDP

# Ubuntu/Debian
sudo apt update
sudo apt install -y xrdp

# CentOS/Rocky Linux
sudo yum install -y epel-release
sudo yum install -y xrdp

2. 配置桌面环境

XRDP 需要一个桌面环境才能工作。如果你还没有安装:

# 安装轻量级桌面 XFCE(推荐,资源占用低)
sudo apt install -y xfce4 xfce4-goodies

# 或者安装轻量级桌面 MATE
sudo apt install -y mate-desktop-environment-core

3. 配置 XRDP 会话

# 设置默认桌面环境
echo "xfce4-session" > ~/.xsessionrc

# 配置 XRDP 使用正确的会话
sudo tee /etc/xrdp/startwm.sh << 'EOF'
#!/bin/sh
if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG
  export LANGUAGE
fi
startxfce4
EOF

sudo chmod 755 /etc/xrdp/startwm.sh

4. 启动并设置开机自启

sudo systemctl enable xrdp
sudo systemctl start xrdp
sudo systemctl status xrdp

5. 配置防火墙

# 允许 RDP 端口(默认 3389)
sudo ufw allow 3389/tcp
# 或者 firewalld
sudo firewall-cmd --permanent --add-port=3389/tcp
sudo firewall-cmd --reload

6. 连接远程桌面

使用任何支持 RDP 的客户端连接:

  • Windows: 自带"远程桌面连接"
  • macOS: Microsoft Remote Desktop(App Store 免费下载)
  • Linux: Remmina、rdesktop
  • 手机: Microsoft Remote Desktop(iOS/Android)

连接地址格式:你的VPS_IP:3389

XRDP 常见问题排查

问题 1:黑屏或登录循环

# 检查桌面环境是否正确设置
cat ~/.xsessionrc
cat ~/.Xauthority

# 修复权限问题
sudo chown -R $USER:$USER ~/.Xauthority
sudo chmod 600 ~/.Xauthority

问题 2:分辨率不匹配

在 Windows 远程桌面客户端中,点击"显示选项"→“屏幕”,调整分辨率。

问题 3:XRDP 服务启动失败

# 检查端口占用
sudo lsof -i :3389

# 查看日志
sudo journalctl -u xrdp -n 50 --no-pager

方案二:NoMachine 配置指南

1. 安装 NoMachine

# 下载最新版
wget https://download.nxnode.com/nx/nomachine_8.14.2_1_amd64.deb.tar.xz

# 解压并安装
tar -xf nomachine_8.14.2_1_amd64.deb.tar.xz
cd nomachine_*
sudo dpkg -i nomachine_*.deb

# 或者 RPM 系统
wget https://download.nxnode.com/nx/nomachine_8.14.2_1_x86_64.rpm.tar.xz
tar -xf nomachine_8.14.2_1_x86_64.rpm.tar.xz
cd nomachine_*
sudo rpm -i nomachine_*.rpm

2. 配置 NoMachine

# 查看服务状态
sudo systemctl status nxserver

# 默认端口是 4000(NX 协议)
sudo ufw allow 4000/tcp

3. 下载客户端

访问 nomachine.com 下载对应平台的客户端。

4. 连接方式

客户端地址格式:你的VPS_IP:4000

NoMachine 性能优化

# 编辑服务器配置
sudo nano /usr/NX/etc/server.cfg

# 优化网络参数
VideoCodecQuality 4        # 最高画质
MaxColorDepth 32           # 32位色彩
MaxSessionFPS 60           # 最大帧率
MinCompressionLevel 0      # 最小压缩(局域网)

安全加固建议

1. 使用 SSH 隧道替代直接暴露端口

# 本地建立隧道
ssh -L 3389:localhost:3389 user@your-vps-ip
# 然后连接 localhost:3389

2. 修改默认端口

# XRDP 修改端口
sudo nano /etc/xrdp/xrdp.ini
# port=3389 改为 port=3390

# NoMachine 修改端口
sudo nano /usr/NX/etc/server.cfg
# port=4000 改为 port=4001

3. 启用 SSH 双因素认证

# 安装 Google Authenticator PAM
sudo apt install -y libpam-google-authenticator
sudo nano /etc/pam.d/sshd
# 添加:auth required pam_google_authenticator.so

4. 配置 fail2ban 防止暴力破解

sudo apt install -y fail2ban

# 创建 XRDP 过滤规则
sudo nano /etc/fail2ban/jail.local
[xrdp]
enabled = true
port = 3389
filter = xrdp
maxretry = 3
bantime = 3600

性能调优对比

XRDP 优化

# 降低颜色深度以提升速度
# 在客户端连接时选择 16 位颜色

# 启用压缩
sudo sed -i 's/MaxBpp=32/MaxBpp=24/' /etc/xrdp/sesman.ini
sudo sed -i 's/MaxBpp=32/MaxBpp=16/' /etc/xrdp/sesman.ini

# 调整缩放
sudo nano /etc/xrdp/sesman.ini
# [Settings]
# Scale=70  # 70% 缩放,节省带宽

NoMachine 优化

# NoMachine 已经非常高效,但可以根据网络环境调整
# 在服务器上:
sudo nano /usr/NX/etc/server.cfg

# 高带宽环境(局域网/专线)
VideoCodecQuality 4
MinCompressionLevel 0

# 低带宽环境(公网/移动网络)
VideoCodecQuality 2
MinCompressionLevel 3

应用场景推荐

场景推荐方案原因
偶尔访问、轻量管理XRDP安装简单,资源占用低
高频使用、需要流畅体验NoMachineNX 协议性能优异
带宽有限(海外 VPS)NoMachine智能压缩,带宽节省明显
多用户同时远程XRDP完全免费,无并发限制
需要音频转发NoMachine原生支持,配置简单
移动设备远程访问NoMachine移动端体验更好

总结

对于大多数 VPS 用户来说:

  • 如果你只需要偶尔进行图形化操作,XRDP 是完全足够的选择,安装简单且完全免费
  • 如果你需要高频远程桌面访问,或者对画面流畅度有要求,NoMachine 是更值得投资的选择

无论选择哪种方案,都建议配合 SSH 隧道使用,避免将远程桌面端口直接暴露在公网中。安全永远是最重要的考虑因素。

📺 看视频版教程 → DuckDB Lab YouTube

Subscribe for more DuckDB & AI automation tutorials