SSH allows tunnelling remote services through an SSH connection:
Tunneling a remote service to the local host:
$ ssh -L PORT:HOST:HOSTPORT [USER@]HOST
Tunneling a local service to a remote host:
$ ssh -R PORT:HOST:HOSTPORT [USER@]HOST