Today I Learned: SSH Tunnels

July 7, 2021
command-line

I often rely on SSH tunnels to forward remote ports locally. For example, to control my remote installation of Resilio Sync. There is a lot of flags you can set, but these are the flags that work best for me:

ssh -CqTnNf -L 8889:localhost:8888 user@example.com

In this example, I forward the remote localhost:8888 port to my local 8889. The flags do the following:

  • C: Compress the data.
  • q: Silent modus.
  • T: Disable pseudo-tty allocation.
  • n: Prevent reading stdin.
  • N: No remote commands, just forwarding.
  • f: Run in the background.
  • L: Specifies the forward.

Now, if you want to exit the tunnel, you could kill SSH pkill ssh, but this will kill all your SSH connections. I multiplex my connections and can run: ssh -O exit user@example.com. You would need this in your ~/ssh/.config to be able to do that as well:

Host *
  ControlMaster auto
  ControlPath ~/.ssh/sockets/%r@%h-%p