在云服务器上安装 CentOS(推荐使用 CentOS Stream 或 Rocky Linux/AlmaLinux 等现代替代品,因 CentOS 8 已停维、CentOS 7 将于 2024 年 6 月结束支持)后,实现类似 Windows 远程桌面(RDP)的图形化远程登录,有以下几种主流方案。需注意:Linux 默认以命令行(SSH)为主,图形远程是可选增强功能,且云服务器通常不默认启用 GUI,需额外安装和配置。
✅ 推荐方案(按优先级排序)
✅ 方案一:SSH + X11 转发(轻量、安全、适合单应用)
- 原理:本地 SSH 客户端开启 X11 转发,远程 CentOS 启动 GUI 应用(如
gedit、firefox),界面显示在本地。 - 适用场景:偶尔运行图形程序(如浏览器、配置工具),无需完整桌面环境。
- 步骤:
- 本地安装支持 X11 的 SSH 客户端:
- Windows:安装 MobaXterm(内置 X Server)或 Xshell + VcXsrv
- macOS/Linux:系统自带
ssh -X支持
- CentOS 上确保已安装基础 GUI 包(如未装):
# 安装最小化 GUI(以 Rocky Linux 9 / AlmaLinux 9 为例) sudo dnf groupinstall "Server with GUI" --setopt=group_package_types=mandatory,default,optional -y # 或仅安装必要 X11 组件(更轻量) sudo dnf install xorg-x11-xauth xorg-x11-apps -y - 启用并启动
sshd(云服务器通常已启用):sudo systemctl enable --now sshd - 本地连接(以 MobaXterm 为例):
- 新建 SSH 会话 → 勾选 “Enable X11 forwarding” → 登录
- 登录后执行:
xclock或xeyes测试;运行firefox &即可弹出浏览器窗口。
- 本地安装支持 X11 的 SSH 客户端:
✅ 优点:无需开放额外端口,复用 SSH(22),加密传输,零配置远程桌面服务。
⚠️ 注意:性能一般,不适合高刷新率应用(如视频、3D)。
✅ 方案二:VNC Server(最接近 Windows 远程桌面体验)
- 原理:在 CentOS 上运行 VNC 服务端(如 TigerVNC),本地用 VNC 客户端(如 RealVNC、TigerVNC Viewer、Remmina)连接。
- 推荐组合:
tigervnc-server+GNOME桌面(或轻量级XFCE)
🔧 快速部署步骤(以 Rocky Linux 9 / CentOS Stream 9 为例):
# 1. 安装 GNOME 桌面(或选 XFCE:dnf groupinstall "Xfce")
sudo dnf groupinstall "Server with GUI" -y
# 2. 安装 TigerVNC
sudo dnf install tigervnc-server -y
# 3. 创建普通用户(⚠️ 强烈建议勿用 root 运行 VNC!)
sudo useradd vncuser
echo "vncuser:yourpassword" | sudo chpasswd
# 4. 切换到该用户,设置 VNC 密码(会生成 ~/.vnc/ 目录)
sudo su - vncuser
vncserver # 首次运行会提示设密码(长度 ≥6,不支持符号太多)
# 按提示 Ctrl+C 退出(仅初始化)
# 5. 配置启动脚本(~/.vnc/xstartup)
cat > ~/.vnc/xstartup << 'EOF'
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /usr/bin/gnome-session
EOF
chmod +x ~/.vnc/xstartup
# 6. 创建 systemd 服务(以 vncuser 为例,端口 5901 → 显示号 :1)
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
sudo sed -i 's/<USER>/vncuser/' /etc/systemd/system/vncserver@:1.service
# 7. 重载并启用服务
sudo systemctl daemon-reload
sudo systemctl enable --now vncserver@:1.service
# 8. 开放防火墙(云服务器务必配置安全组!)
sudo firewall-cmd --permanent --add-port=5901/tcp
sudo firewall-cmd --reload
📱 本地连接:
- 下载 VNC 客户端(如 TigerVNC Viewer)
- 输入:
你的服务器公网IP:5901→ 输入vncuser的 VNC 密码(非系统密码)→ 进入完整 GNOME 桌面。
✅ 优点:完整桌面体验,多用户支持,成熟稳定。
⚠️ 注意:
- 必须配置云服务商安全组(如阿里云/腾讯云/AWS)放行
5901端口;- VNC 传输默认不加密(密码明文),强烈建议:
▪️ 通过 SSH 隧道连接(推荐):ssh -L 5901:localhost:5901 user@server_ip -N,然后本地连localhost:5901;
▪️ 或启用 TLS(需证书,较复杂)。
✅ 方案三:XRDP(支持原生 Windows 远程桌面客户端 RDP)
- 原理:安装
xrdp服务,Windows 自带「远程桌面连接」(mstsc.exe) 即可直连(像连 Windows 一样)。 - 优势:对 Windows 用户最友好,无需额外客户端。
🔧 安装步骤(Rocky/AlmaLinux 9):
# 1. 安装 EPEL 和 xrdp
sudo dnf install epel-release -y
sudo dnf install xrdp tigervnc-server -y
# 2. 启用并启动服务
sudo systemctl enable --now xrdp
sudo systemctl enable --now xrdp-sesman
# 3. 配置防火墙
sudo firewall-cmd --permanent --add-port=3389/tcp
sudo firewall-cmd --reload
# 4. (关键)配置 xrdp 使用 GNOME(编辑 /etc/xrdp/xrdp.ini)
sudo sed -i 's/^startwm.sh$/startplasma-x11/' /etc/xrdp/xrdp.ini # KDE 示例
# 或改为 GNOME(需确保 GNOME 安装):
echo "exec gnome-session" | sudo tee /etc/xrdp/startwm.sh
sudo chmod +x /etc/xrdp/startwm.sh
# 5. 重启 xrdp
sudo systemctl restart xrdp
📱 Windows 连接:
- 打开「远程桌面连接」→ 输入
服务器公网IP→ 登录vncuser(或你的普通用户)→ 输入系统密码。
✅ 优点:Windows 原生支持,体验无缝。
⚠️ 注意:
- xrdp 在新版 GNOME 中兼容性偶有问题,若黑屏可尝试
sudo dnf install mate-desktop+ 配置为mate-session;- 同样需配置云平台安全组放行 3389 端口(⚠️ 生产环境慎用,建议配合 SSH 隧道或 X_X)。
❌ 不推荐方案(安全性/维护性差)
NoMachine/TeamViewer:闭源、商业限制、云服务器可能触发风控;Chrome Remote Desktop:依赖 Google 账户,云服务器无交互式登录环境,配置复杂;- 开放
22端口直接允许 root 密码登录:严重安全隐患!
🔐 安全最佳实践(必做!)
- 禁用 root 远程登录(SSH):
echo "PermitRootLogin no" | sudo tee -a /etc/ssh/sshd_config sudo systemctl restart sshd - 使用密钥登录 SSH,禁用密码认证;
- 云服务器安全组:仅放行必要端口(如 22、5901、3389),避免全网开放;
- 定期更新系统:
sudo dnf update -y; - 使用非标准 SSH 端口(可选但推荐)。
📌 总结选择指南
| 需求场景 | 推荐方案 | 说明 |
|---|---|---|
| 仅需偶尔跑图形程序(如浏览器) | SSH + X11 转发 | 最安全轻量,无需额外端口 |
| 需要完整桌面、多人协作 | VNC(TigerVNC) | 成熟稳定,推荐搭配 SSH 隧道 |
| Windows 用户,追求原生体验 | XRDP | 用 mstsc 直连,但需注意兼容性与安全 |
💡 提示:生产环境优先使用 SSH(命令行),图形界面仅用于管理调试。如需长期图形化运维,建议搭配堡垒机或内网 X_X 提升安全性。
如需我为你生成某一种方案的完整一键脚本(适配 Rocky Linux 9 / AlmaLinux 9),或指导 SSH 隧道配置 VNC/XRDP,欢迎随时告诉我你的具体环境(云厂商、CentOS 版本、是否已有 SSH 访问)😊
PHPWP博客