Project

General

Profile

Feature #365

How To Setup VNC For Ubuntu

Added by Daniel Curtis about 10 years ago. Updated about 10 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
04/15/2014
Due date:
% Done:

100%

Estimated time:
0.50 h
Spent time:

Description

VNC stands for Virtual Network Computing, which allows you to connect to your server remotely, and be able to use your keyboard, mouse, and monitor to interface with that server. The end of this guide will also show how to tunnel a VNC connection through SSH, for secure remote browsing.

Step 1 - Install VNC server and XFCE 4 desktop.

To get started, we will install a VNC server on Ubuntu 12.10 x64 Server droplet. Login as root and install packages:

apt-get -y install ubuntu-desktop tightvncserver xfce4 xfce4-goodies

Step 2 - Add a VNC user and set its password.

adduser vnc
passwd vnc

If you would like to get root as user vnc you would have to add it to sudoers file. Make sure you are logged in as root:

echo "vnc ALL=(ALL)       ALL" >> /etc/sudoers

Set user vnc's VNC Server password:

su - vnc
vncpasswd
exit

This step sets the VNC password for user ‘vnc’. It will be used later when you connect to your VNC server with a VNC client:

Now you can login as user ‘vnc’ and obtain root by running ‘sudo su -‘ and entering your password:

Step 4 - Install VNC As A Service

Login as root and edit /etc/init.d/vncserver and add the following lines:

#!/bin/bash
PATH="$PATH:/usr/bin/"
export USER="vnc"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. /lib/lsb/init-functions

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

restart)
$0 stop
$0 start
;;
esac
exit 0

Edit /home/vnc/.vnc/xstartup and replace with:

#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
startxfce4 &

NOTE: I am setting up vnc with Kali Linux and it uses the gnome-fallback for its session. So to the xstartup file needs to be different, create the following instead:

#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
gnome-session --session=gnome-classic &

Update file permissions and allow any user to start X Server:

chown -R vnc. /home/vnc/.vnc && chmod +x /home/vnc/.vnc/xstartup
sed -i 's/allowed_users.*/allowed_users=anybody/g' /etc/X11/Xwrapper.config

Make /etc/init.d/vncserver executable and start VNC server:

chmod +x /etc/init.d/vncserver && service vncserver start

Add your VNC server to automatically start on reboot:

update-rc.d vncserver defaults

Step 5 - Connect to your droplet with TightVNC

TightVNC is a great VNC client that allows SSH tunnel. It can be downloaded from http://www.tightvnc.com/download.php Make sure to use IP::port as your remote host, where IP is your droplet’s IP and port is 5901:

You will be asked for VNC password that you specified in step 2 with vncpasswd:

And now you are connected:

Recommended Step - Secure your VNC server session with encryption.

A basic VNC server setup has no encryption, which makes it vulnerable to snooping.

We will create an SSH tunnel with Putty and connect to VNC via this tunnel.

First, we need to make sure VNC server only listens on localhost.

Edit /etc/init.d/vncserver and add -localhost to OPTIONS:

OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"

Restart VNC server:

/etc/init.d/vncserver restart

Make sure VNC server is only listening on localhost IP:

netstat -alpn | grep :5901

Download Putty from http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

For Windows: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

Start Putty and enter your droplet IP under Session:

Don’t connect just yet.

Scroll down to Connection -> SSH -> Tunnels and Add New Forwarded Port and click Add:

Now you can connect by clicking Open. You can login as user vnc:

Make sure you don’t close this SSH session, as it creates a tunnel between your PC (localhost) and your droplet, mapping ports 5901 on both ends.

Connect with TightVNC to localhost::5901

Enter your VNC password from Step 3 above:

And you are now connected via a secure connection.

Resources

#1

Updated by Daniel Curtis about 10 years ago

  • Description updated (diff)
  • Status changed from Resolved to Closed

Also available in: Atom PDF