A VNC (Virtual Network Computing) Server is a GUI based desktop sharing platform that allows you to access remote desktop machines. In Centos 8 and RHEL 8 systems, VNC servers are not installed by default and need to be installed manually. In this article, we’ll look at how to install VNC Server on CentOS 8 / RHEL 8 systems with a simple step-by-step installation guide.
Prerequisites to Install VNC Server on Centos 8 / RHEL 8
To install VNC Server in your system, make sure you have the following requirements readily available on your system:
- CentOS 8 / RHEL 8
- GNOME Desktop Environment
- Root access
- DNF / YUM Package repositories
Step by Step Guide to Install VNC Server on Centos 8 / RHEL 8
Step 1) Install GNOME Desktop environment
Before installing VNC Server in your CentOS 8 / RHEL 8, make sure you have a desktop Environment (DE) installed. In case GNOME desktop is already installed or you have installed your server with gui option then you can skip this step.
In CentOS 8 / RHEL 8, GNOME is the default desktop environment. if you don’t have it in your system, install it using the following command:
[[email protected] ~]# dnf groupinstall "workstation" Or [[email protected] ~]# dnf groupinstall "Server with GUI"
Once the above packages are installed successfully then run the following command to enable the graphical mode
[[email protected] ~]# systemctl set-default graphical
Now reboot the system so that we get GNOME login screen.
[[email protected] ~]# reboot
Once the system is rebooted successfully uncomment the line “WaylandEnable=false” from the file “/etc/gdm/custom.conf” so that remote desktop session request via vnc is handled by xorg of GNOME desktop in place of wayland display manager.
Note: Wayland is the default display manager (GDM) in GNOME and it not is configured to handled remote rendering API like X.org
VNC server will not work properly if SElinux is enabled on your system, as of now work around is to disable it using following commands,
[[email protected] ~]# setenforce 0 [[email protected] ~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
Step 2) Install VNC Server (tigervnc-server)
Next we’ll install the VNC Server, there are lot of VNC Servers available, and for installation purposes, we’ll be installing TigerVNC Server. It is one of the most popular VNC Server and a high-performance and platform-independent VNC that allows users to interact with remote machines easily.
Now install TigerVNC Server using the following command:
[[email protected] ~]# dnf install tigervnc-server tigervnc-server-module -y
Step 3) Set VNC Password for Local User
Let’s assume we want ‘pkumar’ user to use VNC for remote desktop session, then switch to the user and set its password using vncpasswd command,
[[email protected] ~]# su - pkumar [[email protected] ~]$ vncpasswd Password: Verify: Would you like to enter a view-only password (y/n)? n A view-only password is not used [[email protected] ~]$ [[email protected] ~]$ exit logout [[email protected] ~]#
Step 4) Setup VNC Server Configuration File
Next step is to configure VNC Server Configuration file. Create a file “/etc/systemd/system/[email protected]” with the following content so that tigervnc-server’s service started for above local user “pkumar”.
[[email protected] ~]# vim /etc/systemd/system/[email protected] [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 pkumar -c "/usr/bin/vncserver %i -geometry 1280x1024" PIDFile=/home/pkumar/.vnc/%H%i.pid ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] WantedBy=multi-user.target
Save and exit the file,
Note: Replace the user name in above file which suits to your setup.
By default, VNC server listen on tcp port 5900+n, where n is the display number, if the display number is “1” then VNC server will listen its request on TCP port 5901.
Step 5) Start VNC Service and allow port in firewall
I am using display number as 1, so use the following commands to start and enable vnc service on display number “1”,
[[email protected] ~]# systemctl daemon-reload [[email protected] ~]# systemctl start [email protected]:1.service [[email protected] ~]# systemctl enable [email protected]:1.service Created symlink /etc/systemd/system/multi-user.target.wants/[email protected]:1.service → /etc/systemd/system/[email protected] [[email protected] ~]#
Use below netstat or ss command to verify whether VNC server start listening its request on 5901,
[[email protected] ~]# netstat -tunlp | grep 5901 tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 8169/Xvnc tcp6 0 0 :::5901 :::* LISTEN 8169/Xvnc [[email protected] ~]# ss -tunlp | grep -i 5901 tcp LISTEN 0 5 0.0.0.0:5901 0.0.0.0:* users:(("Xvnc",pid=8169,fd=6)) tcp LISTEN 0 5 [::]:5901 [::]:* users:(("Xvnc",pid=8169,fd=7)) [[email protected] ~]#
Use below systemctl command to verify the status of VNC server,
[[email protected] ~]# systemctl status [email protected]:1.service
Above command’s output confirms that VNC is started successfully on port tcp port 5901. Use the following command allow VNC Server port “5901” in os firewall,
[[email protected] ~]# firewall-cmd --permanent --add-port=5901/tcp success [[email protected] ~]# firewall-cmd --reload success [[email protected] ~]#
Step 6) Connect to Remote Desktop Session
Now we are all set to see if the remote desktop connection is working. To access the remote desktop, Start the VNC Viewer from your Windows / Linux workstation and enter your VNC server IP Address and Port Number and then hit enter
Next, it will ask for your VNC password. Enter the password that you have created earlier for your local user and click OK to continue
Now you can see the remote desktop,
That’s it, you’ve successfully installed VNC Server in Centos 8 / RHEL 8.
Hope the step-by-step guide to install VNC server on Centos 8 / RHEL 8 has provided you with all the information to easily setup VNC Server and access remote desktops. Please provide your comments and suggestion in the feedback section below. See you in the next article…Until then a big THANK YOU and BYE for now!!!