A few years ago, during my MSc research, I was looking for a way to access the IEEE Xplore from home. IEEE Xplore provides corporate/educational accounts, and they authenticate these accounts based on the requester's IP address. So, if you're inside a university/company which has one of these accounts, you're automatically authenticated based on your machine's IP address.

But what if I'm at home and need to get a copy of that important white paper? Well, at that time, I just had one solution for this: connect to some SSH server on the university, open a text-mode web browser and look for the file at the IEEE Xplore website.

And the change has came when I found this tip http://www.gudlyf.com/2004/01/22/ieee-xplore-from-home, teaching how to create SSH tunnels and redirect ports from a local machine to a remote SSH server.

I found that this is also a pretty useful solution to secure the access to some web-based tools. A few days ago, I installed webmin to ease the management of my home webserver. For security reasons, I just allowed one single IP to access the webmin interface, 127.0.0.1 (the loopback interface in localhost). When I'm remote and I want to access the webmin UI, I just need to execute:

user@OtherPC$ ssh -N -L 10000:127.0.0.1:10000 leo@MyWebServer.net


This creates a tunneled connection between OtherPC and MyWebServer, using my credentials as if I was simply SSHing leo@MyWebServer.net. It then redirects all the requests for the local port 10000 (at the OtherPC) through this SSH tunnel, and when they reach the tunnel's end, forward these requests to the 127.0.0.1:10000 address. In a nutshell, this allows me to type http://127.0.0.1:10000 on the OtherPC's Firefox and to access webmin (in MyWebServer's 10000 port) as I was sitting right in front of the MyWebServer's console.

This is just one of the possible scenarios for SSH tunnels (a very simple scenario), but this is definetively a useful thing for when you just need to access some few resources in your private network but you don't want to set up a VPN server.