TigerVNC 是一个用于启动 VNC (Virtual Network Computing) 桌面服务的工具。它基于 Xvnc 在 VNC 桌面上启动了一个窗口管理器,并提供了
vncserver
和x0vncserver
两个 VNC 服务端。vncserver
允许用户在计算机上并行运行多个虚拟显示会话,实现了多客户端访问该计算机的不同虚拟桌面;x0vncserver
则不创建虚拟显示,而是共享一个现有的 X 服务器,通常被用于实机画面的控制服务。
安装 TigerVNC 服务端
Debain 系
根据需要安装下列包之一:
1 | apt-get install tigervnc-standalone-server # 完整安装 |
RH 系
1 | yum install tigervnc-server # 确保以 root 身份登录 |
提醒: 对于 RH 系 的系统,如果没有连接到 RHN 或卫星服务器,请参考以下文章:
启动 VNC 服务 (虚拟桌面)
准备文件
为需要用于启用 VNC 虚拟桌面服务的用户配置 VNC 密码,在必要时为每个 VNC 用户重复操作:
1 | su - vncuser1 # 切换至对应用户 |
提醒: 使用
vncpasswd
为用户创建密码后,会在对应用户的~/.vnc/
目录下生成名为passwd
VNC 密码文件,也可使用如下命令在任意位置创建任意名称的 VNC 密码文件:
1 vncpasswd .vncpasswd # 在当前目录创建名为 .vncpasswd 的 VNC 密码文件
如需为用户配置分辨率,可选择以下两种方法之一:
- 统一配置。使用您喜欢的编辑器来编辑
/etc/sysconfig/vncservers
追加以下行:
1 | VNCSERVERS="1:vncuser1 2:vncuser2" # 将“vncuser1和“vncuser2”替换为正确的用户名 |
- 单独配置。单独为某个用户配置分辨率,编辑
~/.vnc/config
追加以下行:
1 | geometry = <WIDTH> x <HEIGHT> |
提醒: VNC 虚拟桌面默认分辨率为 1024x768。
创建服务
安装时将自动生成 /usr/lib/systemd/system/vncserver@.service
示例文件,若未找到,可按以下内容手动创建 vncserver@.service
文件:
1 | [Unit] |
将其复制到 /etc/systemd/system/
目录,单用户保持其原名称即可:
1 | cp /usr/lib/systemd/system/vncserver@.service \ |
多用户则需要分别命名:
1 | # vncuser1 |
编辑 /etc/systemd/system/vncserver@.service
文件,将如下行中的 <USER>
替换为实际用户名,其他行不动:
1 | ExecStart=/usr/bin/vncserver_wrapper <USER> %i |
为确保变更生效,需执行以下命令:
1 | systemctl daemon-reload # 重载服务 |
启动服务
启动时需要指定一个非“0”的 <display_number>
(“0”为实机画面预留显示号),并根据系统支持执行以下两组命令之一:
1 | # service 命令 |
启动 VNC 服务 (实机画面)
准备文件
使用 root
用户创建 VNC 密码文件,并将其保存在共享目录 /usr/share/
下以避免权限问题:
1 | mkdir /usr/share/.vnc |
创建服务
在 /etc/systemd/system/
目录下手动创建 x0vncserver.service
文件:
1 | [Unit] |
为确保变更生效,需执行以下命令:
1 | systemctl daemon-reload # 重载服务 |
启动服务
根据系统支持执行以下两组命令之一:
1 | # service 命令 |
(拓展)手动启动的方法
手动使用 TigerVNC 的 x0vncserver
命令共享实机画面:
1 | x0vncserver -PasswordFile=~/.vnc/passwd -AlwaysShared=1 # 使用用户的密码文件,或: |
(拓展)脚本启动的方法
使用 git
工具克隆脚本仓库:
1 | git clone https://github.com/sebestyenistvan/runvncserver.git |
或者通过如下链接下载脚本,并手动上传至服务端主机:
1 | cd ./runvncserver/ # 进入仓库目录 |
脚本用法 (默认使用 ~/.vnc/passwd
文件,启动前确保文件存在):
1 | ./startvnc |
设置脚本开机自启的方法(将下方的地址替换为正确的脚本地址):
1 | echo "/home/user/runvncserver/startvnc start >/dev/null 2>&1" >> ~/.xsessionrc |
配置防火墙
开放相应端口:
1 | # x0vncserver |
提醒: 实机画面需要打开5900端口,此外每个虚拟桌面用户都需要从 5901 开始的已打开的额外防火墙端口。因为在上面添加了两个用户,所以我们需要再打开两个端口。
保存规则(根据情况选择以下之一):
1 | service iptables save # 旧版本 |
提醒: 对于 RHEL7 及以后系统出现缺少
iptables
命令或者重启后iptables
规则失效的情况,请参考以下文章:
参考资料
- 如何在Redhat Enterprise Linux (RHEL) 6上安装和配置VNC服务器 | Dell 中国
- Chapter 13. TigerVNC Red Hat Enterprise Linux 7 | Red Hat Customer Portal
- easy_systemd/x0vncserver@.service at master · SYHGroup/easy_systemd (github.com)
- How to start a vnc server for the actual display (scraping) with TigerVNC (howtoforge.com)
- sebestyenistvan/runvncserver: Shell script to run tigervnc server (github.com)
- 拓展资料:VNC server配置 - 我的linux不可能这么可爱 - SegmentFault 思否
- 拓展资料:x0vncserver 共享桌面-腾讯云开发者社区-腾讯云 (tencent.com)