Types, Benefits & Use Cases of SSH Tunneling

published
September 10, 2024
TABLE OF CONTENTS
Get Secure Remote Access with Netmaker
Sign up for a 2-week free trial and experience seamless remote access for easy setup and full control with Netmaker.

SSH tunneling, also known as SSH port forwarding, establishes a secure, encrypted tunnel between your computer and another device. So, if you want to send a message to a friend, but you don't want anyone else to see it, SSH tunneling wraps your message in a secure envelope so only your friend can read it. 

How SSH tunneling works 

When you set up an SSH tunnel, you're essentially creating a secure bridge between your local machine and a remote server. For instance, when you are in the office and need to access a remote database, you wouldn't connect directly because that would expose the data to the internet.

Instead, you set up an SSH tunnel. This way, your data travels through an encrypted tunnel, making it safe from anyone trying to intercept it. It’s like sending a secret message that only the intended recipient can read.

Another everyday example is securely browsing the internet on public Wi-Fi. Public Wi-Fi can be a security nightmare with potential snoopers everywhere. To protect your browsing activities, you set up an SSH tunnel to a trusted server. Then, you configure your web browser to send all traffic through this tunnel. 

Even if someone is snooping on the public Wi-Fi, they can't see what websites you are visiting or capture any of your data. It’s an effective method for staying secure in coffee shops or airports.

SSH tunneling is also a lifesaver when accessing internal company resources from outside the office. Let’s say you are working remotely and need to access a company intranet site that's only available within the corporate network. 

By creating an SSH tunnel to a company server, you can securely access the intranet site as if you were at your desk in the office. It makes remote work so much simpler and safer.

Setting up an SSH tunnel is straightforward but requires a few command-line instructions. For example, if you want to tunnel your local port 8080 to port 80 on a remote server (since port 80 is typically used for web traffic), you would use a command like this:

ssh -L 8080:remote-server.com:80 myusername@remote-server.com

Now, when you open your web browser and go to `http://localhost:8080`, it routes the traffic through the SSH tunnel to the remote server. This allows you to securely access the remote web service. This kind of setup ensures that your browsing, even on remote servers, remains secure and private.

Benefits of using SSH tunneling

Boosts data security

When you need to access sensitive data on a remote server, you don't want to risk exposing that data to the internet. SSH tunneling creates an encrypted pathway, so your data travels safely. 

For example, if you are in the office and need to access a remote database, setting up an SSH tunnel ensures your queries and results are encrypted. No prying eyes can see what you are doing. It's like having a private, secure conversation in a crowded place.

Protects your privacy

Public Wi-Fi networks are notorious for being insecure. Anyone on the same network can potentially snoop on your activities. To counter this, you set up an SSH tunnel to a trusted server. 

You then configure your web browser to send all traffic through this tunnel. Now, even if someone is lurking on the coffee shop’s Wi-Fi, they won't be able to see my browsing history or steal my data. It's a reliable shield against cyber threats in public spaces.

Simplifies remote work

Suppose you need to access an internal company resource that’s only available within the corporate network. Without a tunnel, you would be out of luck if you were working remotely. 

By creating an SSH tunnel to a company server, you can access the intranet site or internal databases just as if you were in the office. This convenience boosts your productivity because you can securely access everything you need from anywhere. It's like carrying your office environment in your laptop.

Bypassing firewalls and restrictive network policies

Sometimes, certain sites or services are blocked by network administrators. During a business trip, you may find yourself unable to access a crucial service because the hotel's Wi-Fi blocked it. 

By setting up an SSH tunnel to your home server, you can to route your traffic through the tunnel and access the blocked service. This little trick saved your day and kept your project on track.

Offers a way to safely manage remote servers

When you need to administer a server, direct access can be risky. By using an SSH tunnel, you can securely manage the server without exposing it to potential attacks. 

This method ensures that any commands or configurations you send are encrypted. It's like having a secure telephone line straight to the server, ensuring no one can eavesdrop or interfere.

Types of SSH tunneling

Local port forwarding 

Local port forwarding is probably the most widely used type of SSH tunneling. It's incredibly handy when you need to securely access a web service running on a remote server. 

The idea is simple: you forward a port on your local machine to a port on the remote server. This creates an encrypted pathway for your data, ensuring it travels securely.

For example, let's say there's a web service on a remote server that you need to access, but you want all the data to be encrypted along the way. You set up a local SSH tunnel by forwarding a local port, say port 8080, to the remote server's port 80, which is commonly used for web traffic. You do this with a command like:

ssh -L 8080:remote-server.com:80 myusername@remote-server.com

Once this command runs, you can open your web browser and navigate to `http://localhost:8080`. Even though it appears you are accessing a service on your local machine, the traffic is actually routed through the SSH tunnel to the remote server's port 80. 

This makes it feel like the remote service is running locally, but with the added benefit of encryption. It's like having a secure backdoor to the remote server right from my laptop.

Local port forwarding also comes in handy for accessing internal company resources from outside the office. Suppose there's an internal dashboard that’s only available within the corporate network. If you are working remotely, you can set up an SSH tunnel to a company server with:

ssh -L 8080:intranet.company.com:80 myusername@company-server.com

Now, by visiting `http://localhost:8080` on my browser, you  can access the internal dashboard as if you are sitting in the office. This makes remote work much smoother and more secure. you can get to all the essential tools and resources without compromising security.

Remote port forwarding

Remote port forwarding is particularly useful when a service running on your local machine needs to be accessible from a remote server. 

Unlike local port forwarding, where the tunnel starts on your local machine, remote port forwarding begins on the remote server and points back to a port on your local machine.

For example, during a remote debugging session, you may need to share your local development web server with a colleague who is on a different network. By setting up a remote SSH tunnel, you can forward a port on the remote server to your local machine's web server port. The command looks something like this:

ssh -R 9090:localhost:3000 myusername@remote-server.com

After running this command, your colleague can access my local web server by going to `http://remote-server.com:9090`. It’s like turning your local machine into a temporary public server, but with the security assurance that only the designated remote server can access it. This way, you could collaborate seamlessly without compromising on security.

Remote port forwarding also comes in handy when accessing internal services during a business trip. Suppose you need to use a company tool that's only accessible from within the corporate network, but you are staying at a hotel. 

By setting up a remote SSH tunnel from your local machine to a company server, you can forward the company's tool port to your local machine. A command like this does the trick:

ssh -R 8081:internal-tool.company.com:80 myusername@company-server.com

With this tunnel in place, you can access the internal tool by visiting `http://company-server.com:8081` in your web browser. It’s like carrying a secure portal to my office tools, no matter where you are. This capability ensures you stay productive and connected even when you are on the road.

Dynamic port forwarding

Dynamic port forwarding is ideal when a more flexible tunneling solution is needed. Unlike local or remote port forwarding, where specific ports are forwarded, dynamic port forwarding acts like a versatile VPN through a SOCKS proxy. This allows you to route different forms of internet traffic through the secure SSH tunnel.

For instance, when you are on a restrictive network that blocks certain services or websites, dynamic port forwarding can be quite handy. By setting up a dynamic SSH tunnel, you can route all your internet traffic through a trusted server. A command you often use looks like this:

ssh -D 1080 myusername@trusted-server.com

This command tells SSH to start a SOCKS proxy on your local machine at port 1080. Once the tunnel is up and running, you configure your web browser to use `localhost:1080` as its SOCKS proxy. 

This way, all your web traffic is routed through the secure SSH tunnel to the trusted server before heading out to the internet. It's a great way to bypass network restrictions and keep your online activities private.

Another scenario where dynamic port forwarding shines is when you need to secure all your application's traffic, not just web browsing. For example, suppose you are using a chat client or email application that sends data over unencrypted channels. 

By setting up a dynamic SSH tunnel, you can route all the application's traffic through the SSH tunnel, ensuring it’s encrypted and secure. To do this, you use the same command to create the dynamic tunnel:

ssh -D 1080 myusername@trusted-server.com

Then, you configure the application to use `localhost:1080` as a SOCKS proxy. This setup adds a layer of security to everything the application does, not just web traffic. It's like having a personal VPN that encrypts all my data no matter what tool you are using.

Dynamic port forwarding is also incredibly useful when you need to access multiple remote services during a single session. Instead of setting up individual tunnels for each service, you create one dynamic tunnel. 

For instance, if you are working from a hotel with a restrictive internet policy and need to access various development tools and websites, you start your dynamic SSH tunnel with:

ssh -D 1080 myusername@trusted-server.com

With your web browser and development tools configured to use the SOCKS proxy at `localhost:1080`, you can access all the services you need without setting up multiple tunnels. This approach not only simplifies the process but also ensures that all your traffic is encrypted and secure.

Practical applications for SSH tunneling in company networks

Securely accessing internal resources

When working remotely and need to access the company intranet, which is only available within the corporate network. By setting up an SSH tunnel, you can route your traffic through a secure server in the office. 

Improving security on public Wi-Fi

We all know how risky it can be to connect to public networks in coffee shops or airports. To protect my data, you set up an SSH tunnel to a trusted server, often back at the office. By creating a local port forward, you can ensure my web traffic is encrypted. 

Remote collaborations

Let's say you need to share your local development server with a colleague who is on a different network. Using remote port forwarding, you make my local server accessible to your colleague. You run a command like:

ssh -R 9090:localhost:3000 myusername@remote-server.com

Now, your colleague can access your local development server by going to `http://remote-server.com:9090`. This makes it easy to collaborate on projects without exposing your local machine directly to the internet.

Managing remote servers

Direct access to a remote server can be risky because it might expose the server to potential attacks. By using an SSH tunnel, you can securely administer the server. For example, you set up a local port forward to manage a remote database:

ssh -L 3306:remote-database.com:3306 myusername@remote-server.com

This command lets you connect to the remote database securely as if it were local. All database queries and transactions travel through the encrypted tunnel, ensuring that no sensitive information is exposed.

Incorporating SSH tunneling into your company network practices enhances security and accessibility. Whether accessing internal resources, securing public Wi-Fi connections, enabling remote collaboration, bypassing network restrictions, or safely managing servers, SSH tunneling provides a versatile solution to various networking needs.

Get Secure Remote Access with Netmaker
Sign up for a 2-week free trial and experience seamless remote access for easy setup and full control with Netmaker.
More posts

GET STARTED

A WireGuard® VPN that connects machines securely, wherever they are.
Star us on GitHub
Can we use Cookies?  (see  Privacy Policy).