This is really for me to remember…..
We all know how to do local tunnels with SSH but this is how to a remote tunnel to get around 2 firewalls.

Example….. A user on their mac, pc, whatever is behind their DSL router has SSH and Remote Desktop/VNC available.
You are at work or at your home behind a firewall.
You have access to an intermediary SSH server available on the Internet for both parties to connect to.

So, for example, a mac user would enable Remote desktop under Sharing and then open Terminal and type:

# ssh -R 57000:localhost:5900 user@sshserver.somewhere.com

This breaks down thus:

-R means create a remote tunnel with a port listening on the remote SSH server
57000 is the random port I chose (over 1024) to use on the remote server. For this to work you have to add “GatewayPorts yes” to your sshd_config.
localhost:5900 = the local port you want the remote user to connect on (VNC)

Once that connection is made, on the other end of the connection, let’s say its a Windows box (with cygwin for ssh or Putty) you would run:

ssh -L 57000:localhost:57000 user@sshserver.somewhere.com

This breaks down thus:

-L 57000:localhost:57000 means create a local tunnel from the remote port 57000 to local port 57000.

Once this is connected, on the Windows box, open vncviewer and connect to localhost:57000 and you will connect to the Mac.

Voila