一文搞定 CentOS 7 VNC 配置

1. 安装 TigerVNC

> yum install tigervnc-server

2. 设置登录密码

切换至通过 VNC 连接的用户,并使用vncpasswd命令设置密码,长度至少为 6 位

> su - your_user  # If you want to configure VNC server to run under this user directly from CLI without switching users from GUI
> vncpasswd

3. 添加 systemd 配置文件

> cp /lib/systemd/system/vncserver@.service  /etc/systemd/system/vncserver@:1.service
> vim /etc/systemd/system/vncserver@:1.service

编辑配置文件/etc/systemd/system/vncserver@:1.service,注意修改高亮部分

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l my_user -c "/usr/bin/vncserver %i -geometry 1280x1024"
PIDFile=/home/my_user/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

4. 启用服务并设置开机启动

> systemctl daemon-reload
> systemctl start vncserver@:1
> systemctl status vncserver@:1
> systemctl enable vncserver@:1

使用以下命令查看服务状态

> systemctl status vncserver@:1.service
# 或
> service vncserver@:1 status

可以看到vncserver已正常启动

vncserver@:1.service 正常启动
vncserver@:1.service 正常启动

5. 查看端口使用情况

> ss -tulpn | grep vnc
tcp    LISTEN     0      5         *:5901                  *:*                   users:(("Xvnc",pid=1356,fd=9))
tcp    LISTEN     0      128       *:6001                  *:*                   users:(("Xvnc",pid=1356,fd=6))
tcp    LISTEN     0      5        :::5901                 :::*                   users:(("Xvnc",pid=1356,fd=10))
tcp    LISTEN     0      128      :::6001                 :::*                   users:(("Xvnc",pid=1356,fd=5))

或者:

> vncserver -list

TigerVNC server sessions:

X DISPLAY #     PROCESS ID
:1              1344
:2              4112

6. 防火墙放行端口

> firewall-cmd --add-port=5901/tcp
> firewall-cmd --add-port=5901/tcp --permanent

7. 死机重启后服务启动失败的解决办法

系统死机重启后,服务启动失败
系统死机重启后,服务启动失败
手动启动 vncserver 提示端口已被占用
手动启动 vncserver 提示端口已被占用
~/.vnc 目录下残留 centos-1:5.pid
~/.vnc 目录下残留 centos-1:5.pid
该目录下文件未被清除
该目录下文件未被清除

手动清除残余文件后,重新启动服务

> rm ~/.vnc/*.pid
> rm -rf /tmp/.X11-unix
> service vncserver@:1 start

可以看到服务已正常启动

参考文章

  1. How to Install and Configure VNC Server in CentOS 7 | TecMint
  2. How to Install and Configure VNC on CentOS 7 | Linuxize