Tunnel VNC through SSH

From CDOT Wiki
Jump to: navigation, search

How to connect to a VNC session through a tunnel using putty

Create a session profile

Use the IP address of the remote computer you are connecting to. The ssh port is 22 by default.


Enable compression to make the session faster


Setup the tunnel options

VNC uses a 'display number' which, when added to 5900, yields the port number used by the VNC server.

The default VNC display number on single-users systems (such as Mac OSX, Windows, and Linux when mirror the local X Window session remotely) is 0, so the VNC server port on is 5900. On Linux systems where additional displays are started, the display number will start at 1 and increase with each server started, yielding port numbers of 5901, 5902, 5903, and so forth. The 'destination' port configured in the screen below should be where X is the VNC server port number.

The source port is any free and open port on your local machine. The 'local' radio button should be selected. Click add, go back to sessions and save the session for next time. Then login to the remote SSH server as you normal would with your userid and password:


Launch vncviewer

Using a vnc client such as TightVNC, select locahost:50005 (or whatever local port you use):


You will need the VNC server password, naturally. You'll need to ask someone who knows what it is!

Getting the VNC Viewer to Set Up the Tunnel

Many of the vncviewer programs know how to set up an ssh tunnel automatically. You can use the -via option to enable this from the command line:

vncviewer -via username@ localhost:0

This instructs vncviewer to set up an ssh tunnel to the account username on the specified host, and then to connect the VNC server for display 0 on localhost (from the point of view of the far end of the connection, i.e., in this case).

In order for this to work successfully, ssh must be installed on the same system as vncviewer, and it should be called "ssh" (as exists in OSX and Linux systems, and in mozilla-build on Windows). If you're using putty, copy or rename it to ssh.exe, or use the VNC_VIA_CMD environment variable to specify the ssh command name (see the vncviewer documentation for details).