Title: Simple way to use ssh tunnels in scripts
       Author: Solène
       Date: 15 May 2019
       Tags: ssh automation
       Description: 
       
       While writing a script to backup a remote database, I did not know how
       to
       handle a ssh tunnel inside a script correctly/easily. A quick internet
       search
       pointed out this link to me:
       [https://gist.github.com/scy/6781836](https://gist.github.com/scy/67818
       36)
       
       While I'm not a huge fan of the ControlMaster solution which consists
       at
       starting a ssh connection with ControlMaster activated, and tell ssh to
       close
       it, and don't forget to put a timeout on the socket otherwise it won't
       close if
       you interrupt the script.
       
       But I really enjoyed a neat solution which is valid for most of the
       cases:
       
           $ ssh -f -L 5432:localhost:5432 user@host "sleep 5" && pg_dumpall
       -p 5432 -h localhost > file.sql
       
       This will create a ssh connection and make it go to background because
       of `-f`
       flag, but it will close itself after the command is run, `sleep 5` in
       this
       case. As we chain it quickly to a command using the tunnel, ssh will
       only stops
       when the tunnel is not used anymore, keeping it alive only the required
       time
       for the pg_dump command, not more. If we interrupt the script, I'm not
       sure ssh
       will stop immediately or only after it ran successfully the command
       sleep, in
       both cases ssh will stop correctly. There is no need to use a long
       sleep value
       because as I said previously, the tunnel will stay up until nothing
       uses it.
       
       You should note that the ControlMaster way is the only reliable way if
       you need
       to use the ssh tunnel for multiples commands inside the script.