What happens is, most of the time we restrict our various services behind a firewall. Those are not publicly accessible.

Like I always to run my database server on the loopback device (localhost) or on the private network. But sometimes I feel a strong urge to have access to the staging database from the local machine, be it for development o debugging purpose.

Just fo this purpose, I don't want to open those services to the Wild Wild Web! SSH Tunneling comes for rescue.

What do you need? Just bare bone SSH access to that server, doesn't need to be root access.

Here how to do it, I'm showing command for default Postgres port, You can always change to something else:

ssh -L 5431:localhost:5432 babar@db.server

Okay let's breakdown the command.

Now you can simply access the database locally with this command:

psql postgres://localhost:5431/

It's as simple as that.

You could argue, this would open up security issues to the server. I could just export the staging DB and import it on my local machine, but I'm kind of lazy! And if you're concerned about security, don't just give away your SSH access to any random person! On the brighter hand, this will save the hassle of setting up a VPN for small use cases!

Note: You can do a lot of cool staff with SSH Tunneling. Hope this is the first instalment of the upcoming series. Maybe the next instalment will come in a few years!

What's on your mind?