本文基于 openEuler 22.03 LTS SP1 操作系统进行操作
1 VNC 部署流程
1.1 安装 VNC
# 安装 VNC 服务端
$ yum install -y tigervnc-server
# 安装 VNC 客户端(可选)
$ yum install -y tigervnc
# 查看安装情况
$ rpm -qa | grep tigervnc
tigervnc-selinux-1.12.0-9.oe2203sp1.noarch
tigervnc-license-1.12.0-9.oe2203sp1.noarch
tigervnc-server-minimal-1.12.0-9.oe2203sp1.x86_64
tigervnc-server-1.12.0-9.oe2203sp1.x86_64
tigervnc-1.12.0-9.oe2203sp1.x86_64
# 查看服务管理文件,用于使用 systemd 管理 VNC 服务
$ ll /usr/lib/systemd/system/vncserver\@.service
-rw-r--r-- 1 root root 1558 5月 24 2023 /usr/lib/systemd/system/vncserver@.service
# 查看相关配置文件
$ tree /etc/tigervnc/
/etc/tigervnc/
├── vncserver-config-defaults # 默认配置文件,可被 ~/.vnc/config 和 vncserver-config-mandatory 覆盖
├── vncserver-config-mandatory # 强制配置文件,可以覆盖 ~/.vnc/config 和 vncserver-config-defaults
└── vncserver.users # 配置 VNC 用户以及访问端口号
0 directories, 3 files
1.2 配置 tigervnc-server
1.2.1 修改默认配置文件
tigervnc-server 默认配置文件位于 /etc/tigervnc/vncserver-config-defaults
修改前的配置文件内容为:
$ cat /etc/tigervnc/vncserver-config-defaults
## Default settings for VNC servers started by the vncserver service
#
# Any settings given here will override the builtin defaults, but can
# also be overriden by ~/.vnc/config and vncserver-config-mandatory.
#
# See HOWTO.md and the following manpages for more details:
# vncsession(8) Xvnc(1)
#
# Several common settings are shown below. Uncomment and modify to your
# liking.
# session=gnome
# securitytypes=vncauth,tlsvnc
# geometry=2000x1200
# localhost
# alwaysshared
修改后的配置文件内容为:
$ cat /etc/tigervnc/vncserver-config-defaults
session=gnome # 会话类型,此处为 gnome 桌面
securitytypes=vncauth,tlsvnc # 安全类型
geometry=1918x888 # VNC 界面分辨率,根据实际情况调整
# localhost # 若取消注释,表示只能在本地连接 VNC
alwaysshared # 表示同一个显示端口允许多用户同时登录
1.2.2 配置 VNC 用户及访问端口
VNC 用户以及访问端口号配置文件为 /etc/tigervnc/vncserver.users
# 修改配置文件,添加端口号及对应的用户名
$ sed -i '$a :1=root' /etc/tigervnc/vncserver.users
说明:
:1=root
:表示可以通过 :1 或 5901 端口,使用 root 用户登录 VNC,其他用户类似
1.2.3 修改 VNC 用户密码
(1)若 VNC 用户为 root 用户,则按照以下步骤设置 root 用户密码
# 确认当前登录用户为 root 用户
$ whoami
root
# 设置 root 用户密码
$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)?
A view-only password is not used
# 查看生成的密码文件
$ ls -l ~/.vnc/passwd
-rw------- 1 root root 8 3月 4 14:18 /root/.vnc/passwd
(2)若 VNC 用户为普通用户(假如普通用户为 ep),则按照以下步骤设置普通用户密码
# 切换到 ep 用户
$ su - ep
# 确认当前用户为 ep 用户
$ whoami
ep
# 设置 ep 用户密码
$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)?
A view-only password is not used
# 查看生成的密码文件
$ ls -l ~/.vnc/passwd
-rw------- 1 ep ep 8 3月 4 14:22 /home/ep/.vnc/passwd
1.2.4 配置启动参数
启动参数文件位于 ~/.vnc/xstartup
,若此文件不存在,则手动创建即可
注意:
若 VNC 用户为 root 用户,则此文件位于
/root/.vnc/
目录,若 VNC 用户为普通用户,则此文件位于/home/USER/.vnc/
目录其中,DISPLAY 变量的值应该为:从
/etc/tigervnc/vncserver.users
文件查找当前用户对应端口号
# 创建该文件并写入以下参数
cat > ~/.vnc/xstartup <<EOF
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
#exec /etc/X11/xinit/xinitrc
(sleep 5 && export DISPLAY=:1 && xfce4-session) &
EOF
1.2.5 创建服务管理脚本
# 复制服务管理脚本,vncserver@:1.service,其中 @ 后面的数字与 /etc/tigervnc/vncserver.users 文件中的端口对应
$ cp -a /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
# 重新加载服务管理脚本
$ systemctl daemon-reload
# 启动 VNC 服务并设置开机自启
$ systemctl start vncserver@:1.service && systemctl enable vncserver@:1.service
# 查看服务状态
$ systemctl status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-03-01 15:22:13 CST; 1h 31min ago
Process: 1195 ExecStart=/usr/libexec/vncsession-start :1 (code=exited, status=0/SUCCESS)
Main PID: 1219 (vncsession)
Tasks: 0 (limit: 98697)
Memory: 1.8M
CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
‣ 1219 /usr/sbin/vncsession root :1
3月 01 15:22:13 localhost systemd[1]: Starting Remote desktop service (VNC)...
3月 01 15:22:13 localhost systemd[1]: Started Remote desktop service (VNC).
# 查看端口号
$ netstat -anpt | grep Xvnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 1446/Xvnc
tcp6 0 0 :::5901 :::* LISTEN 1446/Xvnc
1.3 使用 noVNC 转发
# 安装 noVNC 服务
$ yum install -y novnc
# 连接 VNC,执行该命令后将持续占用终端
$ novnc_server --listen 44944 --vnc localhost:5901
# 可以执行以下命令,将其放入后台运行
$ nohup novnc_server --listen 44944 --vnc localhost:5901 &
# 查看端口号
$ netstat -anpt | grep python3
tcp 0 0 0.0.0.0:44944 0.0.0.0:* LISTEN 9690/python3
现在可以在 Windows 浏览器中通过 http://SERVER-IP:noVNC-PORT 来访问 VNC 服务了,例如:http://192.168.230.250:44944/
评论