Title: Faster SSH with multiplexing
       Author: Solène
       Date: 22 May 2018
       Tags: unix ssh
       Description: 
       
       I discovered today an OpenSSH feature which doesn't seem to be widely
       known. The feature is called **multiplexing** and consists of reusing
       an opened ssh connection to a server when you want to open another
       one. This leads to faster connection establishment and less processes
       running.
       
       To reuse an opened connection, we need to use the **ControlMaster**
       option, which requires **ControlPath** to be set. We will also set
       **ControlPersist** for convenience.
       
       - **ControlMaster** defines if we create, or use or nothing about
         multiplexing
       - **ControlPath** defines where to store the socket to reuse an opened
         connection, this should be a path only available to your user.
       - **ControlPersist** defines how much time to wait before closing a
         ssh connection multiplexer after all connection using it are
         closed. By default it's "no" and once you drop all connections the
         multiplexer stops.
       
       
           Host *
           ControlMaster auto
           ControlPath ~/.ssh/sessions/%h%p%r.sock
           ControlPersist 60
       
       only. You can create it with the following command:
       
           install -d -m 700 ~/.ssh/sessions
       
       (you can also do `mkdir ~/.ssh/sessions && chmod 700 ~/.ssh/sessions`
       but this requires two commands)
       
       The **ControlPath** variable will creates sessions with the name
       "${hostname}${port}${user}.sock", so it will be unique per remote
       server.
       
       Finally, I choose to use **ControlPersist** to 60 seconds, so if I
       logout from a remote server, I still have 60 seconds to reconnect to
       it instantly.
       
       Don't forget that if for some reason the ssh channel handling the
       multiplexing dies, all the ssh connections using it will die with it.
       
       
       ## Benefits with ProxyJump
       
       Another ssh feature that is very useful is **ProxyJump**, it's really
       useful to access ssh hosts which are not directly available from your
       current place. Like servers with no public ssh server available. For
       my job, I have a lot of servers not facing the internet, and I can
       still connect to them using one of my public facing server which will
       relay my ssh connection to the destination. Using the
       **ControlMaster** feature, the ssh relay server doesn't have to handle
       lot of connections anymore, but only one.
       
       In my *~/.ssh/config* file:
       
           Host *.private.lan
           ProxyJump public-server.com
       
       Those two lines allow me to connect to every servers with .private.lan
       domains (which is known by my local DNS server) by typing 
       `ssh some-machine.private.lan`. This will establish a connection to 
       public-server.com and then connects to the next server.