一文搞定 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 正常启动
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 提示端口已被占用

~/.vnc 目录下残留 centos-1:5.pid

该目录下文件未被清除
手动清除残余文件后,重新启动服务:
> rm ~/.vnc/*.pid
> rm -rf /tmp/.X11-unix
> service vncserver@:1 start
可以看到服务已正常启动:
