This guide will take you through how to install and configure VNC Server on CentOS 8. VNC is an acronym for Virtual Network Computing. It makes it easy to share the graphical desktop of a system for remote control of the system.
Install and Configure VNC Server on CentOS 8
In this guide, we are using TigerVNC to setup VNC Server on CentOS 8. TigerVNC works in a client-server architecture with
vncserver being the utility that provides access to remote desktop and
vncviewer being the client used to connect to VNC server.
Install VNC Server
VNC server is provided by the
tigervnc-server package which is available on the default CentOS 8 AppStream repos. Therefore, update your system and install VNC server by running the commands below;
sudo dnf update
sudo dnf install tigervnc-server
Configure VNC Server on CentOS 8
Once the installation completes, proceed to configure VNC server to define the users that are allowed to access remote desktop. VNC server configuration is managed by Systemd.
NOTE: The user must already be existing on the system. Hence, create the user account for VNC logins.
useradd USER_A passwd USER_A
Next, create a per user VNC systemd configuration file under,
For example, if you want to configure VNC server to provide a display for user,
USER_A, create the VNC systemd configuration file for this user.
You can simply copy the
/usr/lib/systemd/system/[email protected] file renaming it per user and modify it as shown below;
cp /usr/lib/systemd/user/[email protected] /etc/systemd/system/[email protected]
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking WorkingDirectory=/home/USER_A User=USER_A Group=USER_A ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/usr/bin/vncserver -autokill %i ExecStop=/usr/bin/vncserver -kill %i Restart=on-success RestartSec=15 [Install] WantedBy=multi-user.target
Restrict connection to the VNC server only through localhost (Loopback) interface by adding the keyword,
-localhost to the
ExecStart=/usr/bin/vncserver -localhost %i
Then when run, it only opens connection on localhost.
Reload systemd configurations to effect the changes made above.
Next, create the VNC password for the user whose VNC display has been configured. The password can set using the
su - USER_A
Next, create the VNC password. When prompted to set the read-only password, you can choose to not to set it
The VNC passwords are stored under
Once you have set the password, logout to root account by pressing
Ctrl+d or just type
Running VNC Server
VNC server can be run as a normal systemd service. However, to run it, you need to assign a display number to the service. Systemd will automatically substitute the
%i with the specified display number.
One thing to note before starting VNC user service is that, if you
To start and enable VNC server on display number 1;
systemctl start vncserver-
To enable the service to run on system boot;
systemctl enable vncserver-
To check the status;
systemctl status vncserver-
● [email protected]:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: disabled) Active: active (running) since Sun 2019-10-04 02:17:28 EDT; 21s ago Tasks: 156 (limit: 11512) Memory: 204.1M CGroup: /system.slice/system-vncserver\x2damos.slice/[email protected]:1.service ├─4016 /usr/bin/Xvnc :1 -auth /home/amos/.Xauthority -desktop centos8.kifarunix-demo.com:1 (amos) -fp catalogue:/etc/X11/fontpath.d -geomet> ├─4021 /bin/sh /home/amos/.vnc/xstartup ├─4022 /usr/libexec/gnome-session-binary ...
VNC server listens on TCP port 590N. Where N is the VNC display number. This port is incremented based on the VNC display number. For example, for a display number 1, the VCN listens on port 5901.
ss -alt | grep 5901
LISTEN 0 5 0.0.0.0:5901 0.0.0.0:* LISTEN 0 5 [::]:5901 [::]:*
You can as well stop the VNC server session by running;
systemctl stop vncserver-
Allow VNC Server Access on FirewallD
If firewalld is running, you need to open each VNC display port. For example to open port 5901 for display 1 on your active firewalld zone, execute;
firewall-cmd --add-port=5901/tcp --zone=ACTIVE_ZONE --permanent
Test VNC Server Connection
So how do you connect to your CentOS 8 system via the VNC server? To connect to a VNC server, you need to a VNC client.
vncviewer is the commonly used VNC client.
Install TigerVNC client, which provides vncviewer.
dnf install tigervnc
Once the installation is done, you can test VNC server connection to your CentOS 8 system locally as follows;
If you are testing the above command from an SSH session, ensure X11 forwarding is enabled. (ssh -X [email protected])
If all is well, you will be prompted to enter the authentication password.
Once logged in, run through the initial VNC gnome session setup for the user after which you land on CentOS 8 desktop.
That is all on how to install and configure VNC Server on CentOS 8.
Learn how to remotely connect to VNC server via SSH by following the link below.