I need to copy several small files from a remote machine to a local one. I need to do this several times a day. Currently, I use a script that use scp to copy the files. However, this is slow as every time, I need to authenticate. Is there a way, beside mounting, to do one authentication and keep it alive until I finish the copy?
Just use the ControlMaster feature of SSH. For this purpose I placed a global Option:
Host * ControlPath ~<user>/.ssh/ctrl-%r-%h-%p
In my .ssh/config. Of course you must replace
<user> accordingly by your login name.
Whenever I want to setup an initial master connection I add '-M':
ssh -M <machine>
This creates a control socket with a filename specified above. Any subsequent call to ssh/scp targeting that
<machine> will reuse the existing master connection. Dramatically speeding up the connection process because no further authentication is needed for the time the control (==master) connection exists. As a pleasant side effect you don't need to re-enter your pass-phrase once you give it for establishing the master connect.