5 Essential Port Forwarding Techniques Every Developer Should Know
Port forwarding is one of the most powerful yet underutilized features of SSH. It allows you to create encrypted tunnels between your local machine and a remote server, enabling secure access to services that are otherwise locked behind firewalls or restricted networks. In this article, we cover five essential port forwarding techniques that every developer should have in their toolkit.
1. Local Port Forwarding
Local port forwarding lets you access a remote service as if it were running on your local machine. For example, if a database server on port 5432 is only accessible from the remote host, you can run ssh -L 5432:localhost:5432 user@remote to tunnel it to your local port 5432.
2. Remote Port Forwarding
Remote port forwarding works in reverse: it exposes a service running on your local machine to the remote server.
3. Dynamic Port Forwarding (SOCKS Proxy)
Dynamic port forwarding creates a SOCKS proxy on your local machine that routes all traffic through the SSH tunnel.
4. Multi-hop Tunneling
Sometimes you need to reach a server through an intermediary host. SSH supports multi-hop connections using the -J flag.
5. Reverse Tunneling
Reverse port forwarding allows a remote server to connect back to your local machine.
Combining Techniques
You can chain multiple forwarding techniques together.
Best Practices
Only forward ports you absolutely need. Use strong authentication for the SSH tunnel itself.