Establish SSH connection via SSH tunnel in a single command

1

1

I'm trying to connect to one of my internal computers (private ip) using SSH over the internet. The SSH port of that computer is not exposed so I first create a tunnel via a public resource (public ip).

ssh <public ip> -p 2022 -l root -L 127.1.1.1:2222:<private ip>:22

After that, I can create the SSH connection like this :

ssh username@127.1.1.1 -p 2222

Is it possible to execute this with a single command ?

ddewaele

Posted 2013-04-01T22:43:49.053

Reputation: 121

This question is similar to this one http://superuser.com/questions/465423/redirect-all-ssh-traffic-through-a-middleman-server

– Johannes – 2013-08-23T19:34:31.150

Answers

1

You could always just run the commands, one after the other:

ssh root@<public ip> -p 2022 -L 127.1.1.1:2222:<private ip>:22 && 
    ssh username@127.1.1.1 -p 2222

To spare yourself a lot of unnecessary typing, use bash aliases. Add a line like this to your $HOME/.bashrc:

alias ssh_tunnel='ssh <public ip> -p 2022 -l root -L 127.1.1.1:2222:<private ip>:22 && ssh username@127.1.1.1 -p 2222'

Now, open a new terminal and you can launch the tunnel and connect by running

ssh_tunnel

terdon

Posted 2013-04-01T22:43:49.053

Reputation: 45 216

Just found out that this single command works : ssh -A -t root@<public ip> ssh -A -t <private ip> . No need to do it in 2 steps apparently. – ddewaele – 2013-04-01T23:37:40.597

@ddewaele ah, makes sense, you give ssh as the command that ssh should run. Fair enough. I still recommend an alias though, saves a lot of typing. – terdon – 2013-04-02T01:11:34.847