CentOS 7 安装 VNC 服务器完整教程
VNC(Virtual Network Computing)是一种远程桌面协议,允许你通过网络远程控制 CentOS 桌面。本文将详细介绍在 CentOS 7 上安装和配置 VNC 服务器的完整步骤。
一、系统环境
在开始之前,请确保你的系统满足以下条件:
• CentOS 7.x(桌面版或服务器版)
• 具有 sudo 权限的用户账户
• 稳定的网络连接
二、安装桌面环境(服务器版用户)
如果你使用的是 CentOS 7 服务器版,需要先安装桌面环境。桌面版用户可以跳过此步骤。
# 更新软件包列表
sudo yum update -y
# 查看可用的桌面环境组
sudo yum grouplist | more
# 安装 GNOME 桌面环境(推荐)
sudo yum groupinstall -y "GNOME Desktop"
# 或者安装轻量级桌面环境 XFCE
sudo yum install -y epel-release
sudo yum install -y xfce4 xfce4-goodies
三、安装 VNC 服务器
CentOS 7 默认使用 TigerVNC 作为 VNC 服务器。
# 安装 TigerVNC 服务器
sudo yum install -y tigervnc-server
四、配置 VNC 服务
在 CentOS 7 上,可以使用两种方式配置 VNC:传统方式和 systemd 服务方式。
4.1 设置 VNC 密码
# 切换到需要使用 VNC 的用户
su - your_username
# 设置 VNC 访问密码
vncpasswd
# 系统会提示:
# Password: 输入你的 VNC 密码(至少 6 个字符)
# Verify: 再次输入密码确认
# Would you like to enter a view-only password (y/n)? 输入 n(只读密码可选)
4.2 配置 VNC 启动脚本(传统方式)
创建用户目录的 VNC 配置文件:
# 创建 VNC 配置目录(如果不存在)
mkdir -p ~/.vnc
# 编辑启动脚本
nano ~/.vnc/xstartup
如果是 GNOME 桌面环境,添加以下内容:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
# 启动 GNOME 桌面环境
exec /usr/bin/gnome-session &
如果是 XFCE 桌面环境,使用以下内容:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
# 启动 XFCE 桌面环境
exec /usr/bin/startxfce4
保存文件后,设置执行权限:
# 给脚本添加执行权限
chmod +x ~/.vnc/xstartup
4.3 启动 VNC 服务器(传统方式)
# 启动 VNC 服务器(显示号 :1,对应端口 5901)
vncserver :1
# 首次启动会创建日志文件和配置文件
# 启动其他显示号(如果需要)
# vncserver :2 # 端口 5902
# vncserver :3 # 端口 5903
VNC 端口说明:显示号 :1 对应端口 5901,:2 对应 5902,以此类推。
4.4 使用 systemd 服务方式(推荐)
CentOS 7 推荐 systemd 服务方式管理 VNC。
# 复制 systemd 服务模板(以用户 testuser 为例,显示号 :1)
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
# 编辑服务文件
sudo nano /etc/systemd/system/vncserver@:1.service
将文件中的 <USER> 替换为你的用户名:
# 修改前
ExecStart=/sbin/runuser -l -c "/usr/bin/vncserver %i"
PIDFile=/home//.vnc/%H%i.pid
# 修改后(假设用户名为 testuser)
ExecStart=/sbin/runuser -l testuser -c "/usr/bin/vncserver %i"
PIDFile=/home/testuser/.vnc/%H%i.pid
保存后,执行以下命令:
# 重新加载 systemd
sudo systemctl daemon-reload
# 启用并启动 VNC 服务
sudo systemctl enable vncserver@:1.service
sudo systemctl start vncserver@:1.service
# 检查服务状态
sudo systemctl status vncserver@:1.service
五、防火墙配置
CentOS 7 默认使用 firewalld 防火墙,需要开放 VNC 端口。
# 查看当前防火墙状态
sudo firewall-cmd --state
# 开放 VNC 端口(根据你的显示号)
sudo firewall-cmd --permanent --add-port=5901/tcp
sudo firewall-cmd --permanent --add-port=5902/tcp
# 重新加载防火墙配置
sudo firewall-cmd --reload
# 查看开放的端口
sudo firewall-cmd --list-ports
# 或者直接开放 VNC 服务
sudo firewall-cmd --permanent --add-service=vnc-server
sudo firewall-cmd --reload
六、SELinux 配置
CentOS 7 默认启用 SELinux,可能导致 VNC 连接失败。可以选择关闭 SELinux 或配置策略。
6.1 临时关闭 SELinux
# 查看当前 SELinux 状态
getenforce
# 临时关闭(重启后恢复)
sudo setenforce 0
6.2 永久关闭 SELinux
# 编辑 SELinux 配置文件
sudo nano /etc/selinux/config
# 修改 SELinux 模式
# SELINUX=enforcing -> 改为
# SELINUX=disabled
# 保存后重启系统
sudo reboot
七、管理 VNC 服务
7.1 停止 VNC 服务器
# 传统方式:停止指定显示号的 VNC 服务
vncserver -kill :1
# systemd 方式:停止服务
sudo systemctl stop vncserver@:1.service
7.2 重启 VNC 服务器
# 传统方式:停止后重新启动
vncserver -kill :1
vncserver :1
# systemd 方式:重启服务
sudo systemctl restart vncserver@:1.service
7.3 查看运行中的 VNC 服务
# 列出当前用户运行的 VNC 服务(传统方式)
vncserver -list
# 查看 systemd 服务状态
sudo systemctl status vncserver@:1.service
八、使用 VNC 客户端连接
可以使用各种 VNC 客户端连接到服务器。
8.1 命令行客户端
# CentOS/RHEL 安装
sudo yum install -y tigervnc
# 连接到服务器
vncviewer <服务器IP>:5901
# 例如:vncviewer 192.168.1.100:5901
8.2 图形化客户端
常用 VNC 客户端:
• RealVNC Viewer - 跨平台支持
• TigerVNC Viewer - 轻量级
• UltraVNC - Windows 平台
• Remmina - Linux 远程桌面工具
九、安全增强(使用 SSH 隧道)
为了安全起见,建议通过 SSH 隧道访问 VNC,而不是直接暴露 VNC 端口。
9.1 创建 SSH 隧道
# 在本地机器执行,将本地端口转发到远程服务器
ssh -L 5901:localhost:5901 用户名@服务器IP
# 示例
ssh -L 5901:localhost:5901 root@192.168.1.100
SSH 隧道建立后,在本地 VNC 客户端连接 localhost:5901 即可。
9.2 使用 SSH 密钥认证
# 生成 SSH 密钥(如果没有)
ssh-keygen -t rsa -b 4096
# 将公钥复制到服务器
ssh-copy-id 用户名@服务器IP
# 以后可以使用密钥登录
ssh -i ~/.ssh/id_rsa -L 5901:localhost:5901 用户名@服务器IP
十、常见问题排查
10.1 VNC 无法连接
可能的原因和解决方法:
• 检查 VNC 服务是否运行:vncserver -list 或 systemctl status vncserver@:1.service
• 检查防火墙是否开放端口:sudo firewall-cmd --list-ports
• 检查 SELinux 状态:getenforce,如果是 enforcing 可尝试临时关闭
• 检查服务器 IP 地址是否正确
• 查看日志文件:cat ~/.vnc/*.log 或 journalctl -u vncserver@:1.service
10.2 桌面显示异常
如果桌面环境无法正常显示,检查 xstartup 脚本配置。
10.3 密码错误
# 重置 VNC 密码
vncpasswd
# 停止并重启 VNC 服务(传统方式)
vncserver -kill :1
vncserver :1
# systemd 方式
sudo systemctl restart vncserver@:1.service
10.4 无法启动 systemd 服务
# 查看服务状态和错误信息
sudo systemctl status vncserver@:1.service
# 查看服务日志
journalctl -u vncserver@:1.service -n 50
# 常见问题:用户名不正确、xstartup 脚本权限问题、用户目录权限问题
十一、多用户配置
如果多个用户需要使用 VNC,为每个用户创建单独的服务。
# 为用户 user1 创建服务(显示号 :1)
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
# 修改 ExecStart 和 PIDFile 中的用户名为 user1
# 为用户 user2 创建服务(显示号 :2)
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service
# 修改 ExecStart 和 PIDFile 中的用户名为 user2
# 重新加载 systemd
sudo systemctl daemon-reload
# 启动服务
sudo systemctl enable vncserver@:1.service
sudo systemctl enable vncserver@:2.service
sudo systemctl start vncserver@:1.service
sudo systemctl start vncserver@:2.service
十二、性能优化建议
• 降低分辨率:在 VNC 启动命令中使用 -geometry 参数,如 -geometry 1024x768
• 降低颜色深度:使用 -depth 16 或 -depth 8
• 使用有线网络:避免使用 Wi-Fi 以获得更稳定的连接
• 关闭不必要的服务:减少桌面环境的资源占用
• 调整 systemd 服务参数:在服务文件中添加 -geometry 和 -depth 参数
总结
在 CentOS 7 上安装和配置 VNC 服务器的步骤总结:
1. 安装桌面环境(服务器版)
2. 安装 TigerVNC 服务器
3. 配置 xstartup 启动脚本
4. 设置 VNC 密码
5. 配置防火墙开放 VNC 端口
6. (可选)配置 SELinux
7. 启动 VNC 服务(传统方式或 systemd 方式)
8. 使用 VNC 客户端连接
9. (推荐)通过 SSH 隧道增强安全性
CentOS 7 与 Ubuntu 在 VNC 配置上的主要区别:
• 包管理器:yum vs apt
• 防火墙:firewalld vs ufw
• SELinux:需要额外配置
• 服务管理:systemd 服务模板更规范
通过以上步骤,你就可以在本地远程访问 CentOS 7 桌面环境了。
本文基于 CentOS 7.x 编写,其他 CentOS/RHEL 版本步骤类似。如有问题欢迎留言讨论!





