=====SSH reverse tunneling===== First make sure, you have passwordless auth on the systems. use ssh-copy-id for that. ====Dest | NAT | Source==== on the Dest Host: ssh -f -N -R 10000:localhost:22 sourceuser@Dest on the Source Host: ssh localhost -p 10000 Problem with that solution is, that you always have to make sure that the tunnel from Dest to Source is in place. You can do that by a cronjob for example. But you may want to prefer to use autossh! autossh -f -N -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -R 10000:localhost:22 sourceuser@Dest ====Dest | NAT | Middle | Source==== If destination isn't always on, eg your laptop at home, you may want to use a middleman host on the Dest Host: ssh -f -N -R 10000:localhost:22 middleuser@middle on the Source Host: ssh middleuser@middle ssh -p 10000 destuser@127.0.0.1 you may want to put that in your /etc/rc.local, once you got it to work. autossh -f -N -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -R 10000:localhost:22 middleuser@middle & note the "&" at the end, forgetting it may hang up your box at boot!