VNC server/client setup on Debian 9 Stretch Linux

Objective

The objective is to configure a basic client/server VNC setup on Debian 9 Stretch Linux

Operating System and Software Versions

  • Operating System: – Debian 9 Stretch Linux
  • Software: – vnc4server 4.1.1

Requirements

Privileged access to access do your Debian system may be required to install VNC server and client packages. Fully functional and configured X server.

Difficulty

MEDIUM

Conventions

  • # – requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command
  • $ – requires given linux commands to be executed as a regular non-privileged user

Instructions

Server

VNC server Installation

Let’s begin by installation the actual VNC server package vnc4server:

# apt install vnc4server

Set VNC password

Next, we are going to set a VNC password for a user which will eventually create a VNC connection from a remote client. Login as you user using su and set a new password. In the example below we will set a new vnc password for linuxconfig user:

# su linuxconfig
$ vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

Create xstartup script

Depending on your system configuration VNC might start your default windows manager. This behavior can be overridden by ~/.vnc/xstartup script. If the ~/.vnc/xstartup does not exits create it and inlcude the following content to start xterm:

$ cat ~/.vnc/xstartup 
#!/bin/sh

xterm &


Start VNC session

Still as a regular user start a new VNC server session. Feel free to change below command’s parameters to suit your needs:

$ vncserver -localhost no -geometry 800x600 -depth 24
New 'linuxconfig:1 (linuxconfig)' desktop at :1 on machine linuxconfig

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxconfig/.vnc/linuxconfig:1.log

Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /home/linuxconfig/.vnc/passwd linuxconfig:1 to connect to the VNC server.

Note, omitting -localhost no option will cause VNC server to listen only on a localhost’s loopback interface, hence any attempt to connect from a remote location will result in error message:

unable connect to socket: Connection refused (111)

Confirm VNC Session

Confirm that new VNC session started correctly:

$ vncserver -list

TigerVNC server sessions:

X DISPLAY #     PROCESS ID
:1              2776

Alternatively, you should also see open VNC ports when running ss command:

$ ss -ltp | grep vnc
LISTEN     0      5          *:5901                     *:*                     users:(("Xtigervnc",pid=2776,fd=7))
LISTEN     0      5         :::5901                    :::*                     users:(("Xtigervnc",pid=2776,fd=8))


Client

On your remote client first install VNC viewer package:

# apt install xvnc4viewer

All what remains is to connect using xvncviewer command. Based on the above vncserver -list output our VNC session is listening on :1 desktop. We use this information with a combination of server’s IP address eg. 10.1.1.124 to establish a new remote VNC connection:

$ xvncviewer 10.1.1.124:1
TigerVNC Viewer 64-bit v1.7.0
Built on: 2017-04-09 14:55
Copyright (C) 1999-2016 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.

Wed May 31 15:53:28 2017
 DecodeManager: Detected 8 CPU core(s)
 DecodeManager: Creating 4 decoder thread(s)
 CConn:       connected to host 10.1.1.124 port 5901
 CConnection: Server supports RFB protocol version 3.8
 CConnection: Using RFB protocol version 3.8
 CConnection: Choosing security type VeNCrypt(19)
 CVeNCrypt:   Choosing security type VncAuth (2)

Wed May 31 15:53:33 2017
 X11PixelBuffer: Using default colormap and visual, TrueColor, depth 24.
 CConn:       Using pixel format depth 24 (32bpp) little-endian rgb888
 CConn:       Using Tight encoding
 CConn:       Enabling continuous updates

Connected to vnc VNC session

Appendix

Restart your VNC server session

The easiest way to restart your VNC server session is to kill the current session:

$ vncserver -list

TigerVNC server sessions:

X DISPLAY #     PROCESS ID
:1              3081

with -kill option:

$ vncserver -kill :1
Killing Xtigervnc process ID 3081... success!

and start new session as described above.