如何用CentOS搭建TigerVNC服务器实现远程桌面?
- 内容介绍
- 文章标签
- 相关推荐
安装前准备
在开始搭建 TigerVNC 服务器之前。需要先解决以下常见痛点:
- 缺少图形化桌面环境:默认 CentOS Server 版本没有 GUI,直接启动 VNC 会出现空白屏幕。
- 依赖冲突:在旧版 CentOS上使用 yum 安装时会报 “cannot find required package” 的错误。
- 防火墙阻断:firewalld 默认只开启 ssh。VNC 端口需手动开放,否则连接失败。
- 会话冲突:多使用者同时使用同一 VNC 会话号导致互相覆盖。
再看步骤一,安装常用软件包
1️⃣ 确认程序已安装图形化桌面环境。如果没有,可以执行:
# CentOS 7
sudo yum groupinstall -y "Server with GUI"
# CentOS 8 / 9
sudo dnf groupinstall -y "Server with Workstation"
2️⃣ 安装 TigerVNC Server 与相关组件:
# CentOS 7
sudo yum install -y tigervnc-server
# CentOS 8 / 9
sudo dnf install -y tigervnc-server
痛点提示:若出现 “package tigervnc-server-... does not exist” 错误。请检查是否启用了正确的软件仓库,例如 EPEL 或官方 AppStream。
至于步骤二。设置 VNC 密码
`vncpasswd` 用于创建 VNC 登录密码,并可选择加密存储。执行后按提示输入两次就可以完成设置。
# 设置密码
vncpasswd
痛点提示:- 若密码为空或含特殊字符导致客户端拒绝连接,请改为简单英文数字组合;- 如果忘记密码,可删除 /home/使用者名/.vnc/passwd 并重新执行上一步。
从步骤三来看,配置 X Startup 脚本
X Startup 脚本决定了 VNC 启动时加载什么桌面环境。默认文件位于 /etc/vnc/xstartup 或者你可以在使用者目录下创建自定义脚本。
# 编辑 xstartup 文件
sudo vi /etc/vnc/xstartup
# 推荐内容
#!怎么说呢,/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
&& exec /etc/vnc/xsession &
&& xrdb $HOME/.Xresources &
gnome-session --session=gnome-basic &
注意: 务必将文件设为可执行权限:chmod +x /etc/vnc/xstartup
如果你更喜欢轻量级 XFCE。可改成下面内容:
# XFCE 示例
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
步骤四这方面,创建 systemd 服务单元文件
Create a template unit file so each session can be managed individually.
# /etc/systemd/system/vncserver@.service
Description=TigerVNC Server for %i
After=syslog.target network.target
Type=forking
User=%i # 使用者名。如 alice、bob 等,确保对应 home 有 .vnc/passwd 和 .vnc/xstartup
PIDFile=/home/%i/.vnc/%H:%i.pid
ExecStartPre=/usr/bin/mkdir -p /home/%i/.vnc \
&& /usr/bin/chown %i:%i /home/%i/.vnc \
&& rm -f $PIDFile
ExecStart=/usr/bin/vncserver :%i \
-geometry 1280x800 \
-depth 24 \
-localhost no \
-rfbauth /home/%i/.vnc/passwd \\
>/dev/null &>
提示: %i 表示会话号,例如 :1、:2; %H 为主机名,请根据实际情况修改方法与权限。
启动并设置开机自启:
# 开机自启并立即开启服务
sudo systemctl daemon-reload # 刷新 unit 文件
sudo systemctl enable
sudo systemctl start
# 检查状态
systemctl status
警告: 如果同一台机器上有多个使用者同时登录同一个会话号。会出现互相覆盖的问题,请确保每个使用者使用独立的会话号。
步骤五这方面。开放防火墙端口
TigerVNC 默认端口为5900+n,其中 n 是会话号。例如 alice 使用 :1 时端口为5901。打开对应端口即可,老实说,
# 打开所有 VNC 服务端口范围
sudo firewall-cmd --permanent --add-port=5900-5999/tcp
sudo firewall-cmd --reload
# 或者仅针对特定会话号:
sudo firewall-cmd --permanent --add-port=5901/tcp
sudo firewall-cmd --reload
IPv6 环境下的注意事项:
- Might need to disable IPv6 binding if clients cannot connect.
- Add `-localhost no` flag in ExecStart ensures remote connections are accepted.
说到步骤六。从客户端连接到 VNC Server
| 网站 | 客户端软件建议 |
|---|---|
| Windows 10/11 / Server 2019+ | ,或者 RealVNC Viewer。 |
| Linux Desktop | ,或者内置 Vino、Remmina 等工具。 |
| Mac OS X + iPad + Android 手机等移动设备 | |
-
连接格式的观点是。
: :,如 192.168.10.5:1。若开启了防火墙,仅允许特定 IP 段请检查访问规则。 - 首次连接时客户端可能弹出安全证书警告,请确认服务器身份后继续。
- 若显示的是黑屏或无窗口。请检查 X Startup 是否正确加载桌面环境,并确保已重启对应服务。
-
对高 DPI 显示器可在 xstartup 中添加
export GDK_SCALE=2等调整分辨率参数。 - 常见错误及方法:
Error opening display: — 检查是否忘记在 ExecStart 中加入 -localhost no;不过,
Connection timed out: — 防火墙未开放对应端口;
Auntication failed: — 密码错误或未保存到 ~/.vnc/passwd;
Unknown protocol version: 与客户端版本不匹配,可尝试更新 TigerVNC 客户端到最新版。\end{itemize}
安装前准备
在开始搭建 TigerVNC 服务器之前。需要先解决以下常见痛点:
- 缺少图形化桌面环境:默认 CentOS Server 版本没有 GUI,直接启动 VNC 会出现空白屏幕。
- 依赖冲突:在旧版 CentOS上使用 yum 安装时会报 “cannot find required package” 的错误。
- 防火墙阻断:firewalld 默认只开启 ssh。VNC 端口需手动开放,否则连接失败。
- 会话冲突:多使用者同时使用同一 VNC 会话号导致互相覆盖。
再看步骤一,安装常用软件包
1️⃣ 确认程序已安装图形化桌面环境。如果没有,可以执行:
# CentOS 7
sudo yum groupinstall -y "Server with GUI"
# CentOS 8 / 9
sudo dnf groupinstall -y "Server with Workstation"
2️⃣ 安装 TigerVNC Server 与相关组件:
# CentOS 7
sudo yum install -y tigervnc-server
# CentOS 8 / 9
sudo dnf install -y tigervnc-server
痛点提示:若出现 “package tigervnc-server-... does not exist” 错误。请检查是否启用了正确的软件仓库,例如 EPEL 或官方 AppStream。
至于步骤二。设置 VNC 密码
`vncpasswd` 用于创建 VNC 登录密码,并可选择加密存储。执行后按提示输入两次就可以完成设置。
# 设置密码
vncpasswd
痛点提示:- 若密码为空或含特殊字符导致客户端拒绝连接,请改为简单英文数字组合;- 如果忘记密码,可删除 /home/使用者名/.vnc/passwd 并重新执行上一步。
从步骤三来看,配置 X Startup 脚本
X Startup 脚本决定了 VNC 启动时加载什么桌面环境。默认文件位于 /etc/vnc/xstartup 或者你可以在使用者目录下创建自定义脚本。
# 编辑 xstartup 文件
sudo vi /etc/vnc/xstartup
# 推荐内容
#!怎么说呢,/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
&& exec /etc/vnc/xsession &
&& xrdb $HOME/.Xresources &
gnome-session --session=gnome-basic &
注意: 务必将文件设为可执行权限:chmod +x /etc/vnc/xstartup
如果你更喜欢轻量级 XFCE。可改成下面内容:
# XFCE 示例
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
步骤四这方面,创建 systemd 服务单元文件
Create a template unit file so each session can be managed individually.
# /etc/systemd/system/vncserver@.service
Description=TigerVNC Server for %i
After=syslog.target network.target
Type=forking
User=%i # 使用者名。如 alice、bob 等,确保对应 home 有 .vnc/passwd 和 .vnc/xstartup
PIDFile=/home/%i/.vnc/%H:%i.pid
ExecStartPre=/usr/bin/mkdir -p /home/%i/.vnc \
&& /usr/bin/chown %i:%i /home/%i/.vnc \
&& rm -f $PIDFile
ExecStart=/usr/bin/vncserver :%i \
-geometry 1280x800 \
-depth 24 \
-localhost no \
-rfbauth /home/%i/.vnc/passwd \\
>/dev/null &>
提示: %i 表示会话号,例如 :1、:2; %H 为主机名,请根据实际情况修改方法与权限。
启动并设置开机自启:
# 开机自启并立即开启服务
sudo systemctl daemon-reload # 刷新 unit 文件
sudo systemctl enable
sudo systemctl start
# 检查状态
systemctl status
警告: 如果同一台机器上有多个使用者同时登录同一个会话号。会出现互相覆盖的问题,请确保每个使用者使用独立的会话号。
步骤五这方面。开放防火墙端口
TigerVNC 默认端口为5900+n,其中 n 是会话号。例如 alice 使用 :1 时端口为5901。打开对应端口即可,老实说,
# 打开所有 VNC 服务端口范围
sudo firewall-cmd --permanent --add-port=5900-5999/tcp
sudo firewall-cmd --reload
# 或者仅针对特定会话号:
sudo firewall-cmd --permanent --add-port=5901/tcp
sudo firewall-cmd --reload
IPv6 环境下的注意事项:
- Might need to disable IPv6 binding if clients cannot connect.
- Add `-localhost no` flag in ExecStart ensures remote connections are accepted.
说到步骤六。从客户端连接到 VNC Server
| 网站 | 客户端软件建议 |
|---|---|
| Windows 10/11 / Server 2019+ | ,或者 RealVNC Viewer。 |
| Linux Desktop | ,或者内置 Vino、Remmina 等工具。 |
| Mac OS X + iPad + Android 手机等移动设备 | |
-
连接格式的观点是。
: :,如 192.168.10.5:1。若开启了防火墙,仅允许特定 IP 段请检查访问规则。 - 首次连接时客户端可能弹出安全证书警告,请确认服务器身份后继续。
- 若显示的是黑屏或无窗口。请检查 X Startup 是否正确加载桌面环境,并确保已重启对应服务。
-
对高 DPI 显示器可在 xstartup 中添加
export GDK_SCALE=2等调整分辨率参数。 - 常见错误及方法:
Error opening display: — 检查是否忘记在 ExecStart 中加入 -localhost no;不过,
Connection timed out: — 防火墙未开放对应端口;
Auntication failed: — 密码错误或未保存到 ~/.vnc/passwd;
Unknown protocol version: 与客户端版本不匹配,可尝试更新 TigerVNC 客户端到最新版。\end{itemize}

