SSH Proxy
Sometimes you need to access a host on a private network and the only access you have to that network is via an SSH server at the edge. For me, I’ve got a bunch of servers in a VPC and one machine at the edge with an Elastic IP. I built some SSH config options so I can quickly access these resources without having to re-invent the wheel each time.
I use ssh (comes with OSX and Linux generally) and nc (netcat), installed via HomeBrew.
In ‘~/.ssh/config’:
Host tunnel
HostName elastic-ip-of-edge-server
User my-user-account
ServerAliveInterval 30
DynamicForward localhost:1080
This creates an alias called tunnel that I can use to proxy traffic over.
Also in ‘~/.ssh/config’:
Host private-server
HostName private-ip-of-server
User user-account-on-private-server
ProxyCommand /usr/bin/nc -x localhost:1080 %h %p
This creates a connection to the private server by netcatting the traffic over the ssh proxy. To access it, I open the tunnel first and then connect to the private server.
$ ssh tunnel
In a seperate terminal tab:
$ ssh private-server
That’s it.
Fri 10 Jul 2015