Speed Up Multiple SSH Connections to the Same Server
If you run a lot of terminal tabs or scripts that all need to make OpenSSH connections to the same server, you can speed them all up with multiplexing: making the first one act as the master and letting the others share its TCP connection to the server.
If you don’t already have a config file in the .ssh directory in your home directory, create it with permissions 600: readable and writeable only by you.
Then add these lines:
Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster auto tells ssh to try to start a master if none is running, or to use an existing master otherwise.
ControlPath is the location of a socket for the ssh process to communicate among themselves. The %r, %h and %p are replaced with your user name, the host to which you’re connecting and the port number - only ssh sessions from the same user to the same host on the same port can or should share a TCP connection, so each group of multiplexed ssh process needs a separate socket.
To make sure it worked, start one ssh session and keep it running. Then, in another window, open another connection with the -v option:
~ ssh -v example.com echo "hi"
And, instead of the long verbose messages of a normal ssh session, you’ll see a few lines, ending with:
debug1: auto-mux: Trying existing master
hi
Pretty fast. If you have to connect to an old ssh implementation that doesn’t support multiplexed connections, you can make a separate Host section:
Host antique.example.com
ControlMaster no
For more info, see man ssh and man ssh_config.