VNC Server Installation on CentOS 7


To totally unlock this section you need to Log-in


Login

This guide explains how to configure VNC server in CentOS 7.0 server. It is a very convinient way of administrating the CentOS 7.0 with the help of GUI (Graphics User Interface). The GUI can be access any where with the help of the VNC client on any OS.

The basic condition is that the connecting OS must have VNC clients installed in it.

This tutorial is based on CentOS 7.0 server, so you should set up a basic CentOS 7.0 server installation before you continue with this tutorial. The system should have a static IP address. We use 192.168.0.100 as our IP address in this tutorial and server1.example.com as the hostname.

IP address 192.168.0.100
Gateway 192.168.0.1
DNS     8.8.8.8    8.8.4.4
Hostname server1.example.com

VNC Server Benefits

  • Remote GUI administration makes work easy & convenient.
  • Clipboard sharing between host CentOS server & VNC-client machine.
  • GUI tools can be installed on the host CentOS server to make the administration more powerful.
  • Host CentOS server can be administered through any OS having the VNC-client installed.
  • More reliable over ssh graphics.
  • More reliable over RDP connections.

Installation

We are logged in our system with root, and now we will install the VNC Server.

yum install tigervnc-server

Adding VNC user

In our case we are using user=example it will differ in your case. You can use any username at this stage.

useradd example

In CentOS 7.0 there is change in the vncserver configuration file. Before ContOS 7.0 it was /etc/sysconfig/vncservers and now it have changed in /lib/systemd/system/[email protected]. Next we will use the original file and create the configuration file as shown:

cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service

Now we will edit the file as follows:

vi /etc/systemd/system/vncserver@:1.service

Replace the string with appropriate vncuser’s username. In our case we will use the user example just created above:

[...]
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
#ExecStart=/sbin/runuser -l  -c "/usr/bin/vncserver %i"
#PIDFile=/home//.vnc/%H%i.pid
ExecStart=/sbin/runuser -l srijan -c "/usr/bin/vncserver %i"
PIDFile=/home//.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

If you wish to add more users you would create a new vncserver@:#.service file and change the string to your user.

Firewall settings:

firewall-cmd --permanent --zone=public --add-service vnc-server
firewall-cmd --reload

Now switch to the vncuser just created above and start the VNC service as:

[srijan@server1 ~]$su - srijan
[srijan@server1 ~]$ vncserver

You will be required a password to access your desktops.

Password:< --yourvncpassword
Verify:<--yourvncpassword
xauth:  file /home/example/.Xauthority does not exist

New 'server1.example.com:1 (example)' desktop is server1.example.com:1
Creating default startup script /home/kishore/.vnc/xstartup Starting applications specified in /home/kishore/.vnc/xstartup Log file is /home/example/.vnc/server1.example.com:1.log
[srijan@server1 ~]$

Now make the service enabled on after every reboot with root credentials:

su -

systemctl daemon-reload
systemctl enable vncserver@:1.service
reboot
systemctl start vncserver@:1.service

VNC Client

At client side our OS is Ubuntu 14.04 with vino installed on our client machine. Otherwise you can install any VNC client of your choice. In case other OS say Windows 7 you can install RealVNC or TightVNC or TigerVNC clients or any other of your choice.

Now we are going to connect with the VNC server through our VNC client at 192.168.0.100:5901:

VNC Server Installation on CentOS 7

It will prompt for the password, give the VNC password just created above as follows:

VNC Server Installation on CentOS 7

Put yourvncpassword the same which you gave at the time of adding the user example.

VNC Server Installation on CentOS 7

Now you are connected with the CentOS 7.0 Server. In case you want to add more users to access the VNC console you need to add:

cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:2.service
vi /etc/systemd/system/vncserver@:2.service

For instance we are using user kishore, entries will be like this:

[...]
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
#ExecStart=/sbin/runuser -l  -c "/usr/bin/vncserver %i"
#PIDFile=/home//.vnc/%H%i.pid
ExecStart=/sbin/runuser -l kishore -c "/usr/bin/vncserver %i"
PIDFile=/home/kishore/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

Now switch to the VNC user just created above and start the VNC service as:

su - kishore
[kishore@server1 ~]$ vncserver

You will require a password to access your desktops:

Password:< --yourvncpassword
Verify:<--yourvncpassword
xauth:  file /home/kishore/.Xauthority does not exist

New 'server1.example.com:2 (kishore)' desktop is server1.example.com:2
Creating default startup script /home/kishore/.vnc/xstartup Starting applications specified in /home/kishore/.vnc/xstartup Log file is /home/kishore/.vnc/server1.example.com:2.log
[kishore@server1 ~]$

Now start the VNC service on after every reboot for second user as follows:

systemctl daemon-reload

systemctl enable vncserver@:2.service
systemctl start vncserver@:2.service

This will enable user kishore to get the access to the VNC server with the port 5902 as 192.168.0.100:5902. In the same way you can add the root user also.