VNC server and viewer on Linux

  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
  • : Function ereg() is deprecated in /home/bulahema/public_html/old/includes/file.inc on line 645.
vncserver and vncviewer

Check what's installed

First check if you already have them installed on your system, open a terminal and type:

$ rpm -qa|grep vnc
vnc-server-4.1.1-36
vnc-4.1.1-36


If you get an output something like this then you're all ready, if not you need to install them via yum.

Add a user(s)

Next we need to add at least 1 VNC user, open the file /etc/sysconfig/vncservers as root and add the information shown:

$ vi /etc/sysconfig/vncservers

# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the lines below to start a VNC server on display :2
# as my 'myusername' (adjust this to your own).  You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted!  For a secure way of using VNC, see
# <URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html>.

# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.

# Use "-nohttpd" to prevent web-based VNC clients connecting.

# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel.  See the "-via" option in the
# `man vncviewer' manual page.

VNCSERVERS="1:bobpeers"
VNCSERVERARGS[1]="-geometry 1024x768 -depth 16"


The important part is the VNCSERVERS="1:bobpeers", this sets up a users for the vnc server, you can add as many as you like here. The VNCSERVERARGS[1]
line refers to the arguments for user 1, in this case the only user. Geometry sets the size and depth sets the colour depth, you can adjust these to
suit your preferences but in my case the client machine has a resolution of 1024x768 and the depth 16 makes the connection a bit faster since the less
information that needs to be sent the more responsive the session will feel.

Knowing which port to use

It's also important to note the session number user as this will tell us which port vncserver will listen on. Remember the Gnome Remote Desktop
asked us to use computername:0 as the connection string, the number needs to be added to 5900 to get the listening port. In this case we need to use
port 5901 since we are using session 1. In the same way we could use any number, for example:

VNCSERVERS="2000:bobpeers"
VNCSERVERARGS[2000]="-geometry 1024x768 -depth 16"


In this case we need to use port 5900+2000 so port 7900.

Setting a password

To add some security we need to add a password that must be given before a connection can be established, open a terminal and type:

$ vncpasswd
Password:
Verify:


This creates a hidden folder called .vnc in your home folder containing the password file.

Starting the server and startup options

To start the server we type the command 'vncserver' and the session you wish to start (if you have set up more than 1 entry in the
/etc/sysconfig/vncservers file:

$ vncserver :1
Starting VNC server: 1:bobpeers
New 'linux.bobpeers:1 (bobpeers)' desktop is linux.bobpeers:1

Starting applications specified in /home/bobuser/.vnc/xstartup
Log file is /home/bobuser/.vnc/linux.bobpeers:1.log

                                                           [  OK  ]


Now the server is started and a user could connect, however they will get a plain grey desktop by default as the connection will not cause a new
session of X to start by default, to fix this we need to edit the startup script in the .vnc folder in your home directory.

$ vi ~/.vnc/xstartup

#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &


As the file says make sure the two lines at the top are uncommented by removing the leading # sign. Next we need to restart vncserver to pick up
the changed we just made. To restart the vncserver we need to kill the process and start a new one as root:

$ vncserver -kill :1
Killing Xvnc process ID 13728


$ vncserver :1
Starting VNC server: 1:bobpeers
New 'linux.bobpeers:1 (bobpeers)' desktop is linux.bobpeers:1

Starting applications specified in /home/bobuser/.vnc/xstartup
Log file is /home/bobuser/.vnc/linux.bobpeers:1.log

                                                           [  OK  ]


Using vncviewer

To start the viewer type:

$ vncviewer localhost:5901


This open a dialog as shown for us to enter our password we set earlier, enter the password and you should now see a copy of your desktop. Note
that unlike the Gnome Remote Desktop this has started a new session of X so any applications open on the host machine are not visible to the new
session, it's basically a whole new logon running at the same time.

If you just type 'vncviewer' at the prompt then you will asked for the host to connect to, then you can type localhost:5901 for example.
Remember to use the correct port number when connecting, if you set your VNCSERVERS to be 2000:myname then you would need to connect on localhost:7900.

VNCVIEWER logon

Stopping the vncserver

There are two ways to stop the server, either as root:

$ /sbin/service vncserver stop
Shutting down VNC server: 1:bobpeers                        [  OK  ]


or you can explicitly kill a particular session without being root:

$ vncserver -kill :1
Killing Xvnc process ID 13728


Just replace the 1 with the vnc session you wish to stop.