VNC stands for Virtual Network Computing. It is a desktop sharing system that allows you to remotely control another computer. It uses Remote Frame Buffer Protocol (RFB) which allows remote access to graphical user interfaces. VNC transmits the keyboard and mouse inputs from one computer to another and relays the graphical screen back in the direction of the network. This makes it a good choice for customer support as users are connected to the same computer and type and see the same thing on the keyboard. Popular VNC vendors include RealVNC, TightVNC, TigerVNC, TurboVNC, etc.


  • Cross-platform support
  • It is an open protocol
  • VNC Server captures the desktop of the computer in real-time and sends it to VNC Viewer for display.


Xrdp provides a graphical login to remote machines using Microsoft Remote Desktop Protocol (RDP). It primarily supports GNU/Linux operating system. It works by effectively creating a desktop session on the server computer which includes the user profile. It makes it seem as if you are signing in to a physical server. It supports multiple remote users connecting to the same server completely unaware of each other. RDP transport is encrypted using TLS by default. Popular RDP clients that connect to Xrdp include FreeRDP, rdesktop, KRDC, NeutrinoRDP, and Microsoft Remote Desktop Client (for Windows, macOS, iOS, and Android).


  • It supports two-way clipboard transfer (text, bitmap, file)
  • It is a Free and Open-source Remote Desktop Protocol server
  • Audio redirection
  • Drive redirection (mount local client drives on the remote machine)
  • Reconnect to an existing session
  • Session resizing (both on-connect and on-the-fly)

This guide will show you how to Configure VNC and Xrdp server on CentOS 9|AlmaLinux 9|RHEL 9.

Install TigerVNC on CentOS 9|AlmaLinux 9|RHEL 9

As a prerequisite, you should have the GNOME desktop environment installed.

sudo dnf groupinstall -y "Server with GUI"

Update your system packages.

sudo dnf update -y

Disable SELinux.

$ sudo vi /etc/sysconfig/selinux

Save and exit the file then reboot your system.

sudo reboot

Install TigerVNC with the following command.

sudo dnf install tigervnc-server

Copy the configuration file to /etc/systemd/ directory and mention the display number on which we want the VNC service to listen. If setting up the VNC server for one user, you would not be required to mention the display number. If setting it for multiple users the display number is essential.

sudo cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/[email protected]:2.service

Edit the configuration file to set the Username of an actual user. Save and exit the file.

$ sudo vi /etc/tigervnc/vncserver.users

Set the Password for the user configured in the configuration file above.

$ vncpasswd
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

Configure the VNC service with the following details.

$ vim ~/.vnc/config

Configure Firewall rules to allow VNC service.

sudo firewall-cmd --permanent --add-service=vnc-server
sudo firewall-cmd --permanent --add-port=5902/tcp
sudo firewall-cmd --reload

Set the session to GNOME desktop environment.

echo gnome-session > ~/.session

Start and enable the TigerVNC service.

sudo systemctl start [email protected]:2.service
sudo systemctl enable [email protected]:2.service

Check the status of the service.

$ systemctl status [email protected]:2.service[email protected]:1.service - Remote desktop service (VNC)
     Loaded: loaded (/etc/systemd/system/[email protected]:2.service; enabled; vendor >
     Active: active (running) since Mon 2022-07-11 13:34:28 EAT; 25s ago
   Main PID: 33168 (vncsession)
      Tasks: 0 (limit: 48797)
     Memory: 1.0M
        CPU: 34ms
     CGroup: /system.slice/system-vncserver.slice/[email protected]:2.service
             ‣ 33168 /usr/sbin/vncsession technixleo :2

Access TigerVNC

I will download VNC Viewer for Windows in my case. Download the latest binary release from SourceForge.

Install the application and start the service. Input the IP address of the Linux server and the display port and click OK.

Enter the VNC Password for the user to connect.

The connection is successful when the desktop connection shows.

Install xrdp server on CentOS 9|AlmaLinux 9|RHEL 9

We should Enable EPEL Repository on your system.

You should also have GNOME as the main desktop environment.

sudo dnf groupinstall "Server with GUI"

Update your system.

sudo dnf update -y

Disable SELinux on your system if it is enabled.

$ sudo vi /etc/sysconfig/selinux

Save and exit the file. Reboot your system for the changes to take effect.


After Restart, install xrdp with the following command.

sudo dnf install xrdp

Configure the Firewall to accept xrdp traffic.

sudo firewall-cmd --permanent --add-port=3389/tcp
sudo firewall-cmd --reload

Set the session to GNOME.

echo gnome-session >~/.xsession

Start and enable the service.

sudo systemctl enable --now xrdp

Check the status of the service.

$ systemctl status xrdp
● xrdp.service - xrdp daemon
     Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled; vendor pres>
     Active: active (running) since Mon 2022-07-11 22:49:10 EAT; 13s ago
       Docs: man:xrdp(8)
   Main PID: 21058 (xrdp)
      Tasks: 1 (limit: 48797)
     Memory: 1.0M
        CPU: 4ms
     CGroup: /system.slice/xrdp.service
             └─21058 /usr/sbin/xrdp --nodaemon

Verify xrdp is listening on port 3389.

$ sudo netstat -antup | grep xrdp
tcp6       0      0 ::1:3350                :::*                    LISTEN      3502/xrdp-sesman    
tcp6       0      0 :::3389                 :::*                    LISTEN      3503/xrdp 

Access the Server

Take RDP on any Windows machine via Remote Desktop Connection. Input the Linux server IP address then click Connect.

You can ignore the certification mismatch warning. Click Yes.

Type in the root or username already on the server together with the corresponding password. Then click OK.

With correct credentials, the connection is successful and appears as shown below.


From this Guide, we have learned how to Install and Configure VNC and Xrdp servers on CentOS 9|AlmaLinux 9|RHEL 9. Both Technologies have the same goal of accessing another computer remotely from the host system. It depends on the use, as both of them support multiple platforms.


Please enter your comment!
Please enter your name here