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 firstname.lastname@example.org
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 email@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