Mon 28 January 2019

Se abbiamo la necessità di aprire diverse connessioni ad un host sul quale non è possibile l'autenticazione con chiave possiamo evitare di digitare ogni volta la password riutilizzando un'unica connessione.

Per prima cosa ci connettiamo all'host remoto attivando il Control Master e specificando il socket da utilizzare per le successive connessioni:

ssh -M -S ~/.ssh/<socket> <host>

Quindi apriamo le connessioni successive usando il socket, in questo modo non ci verrà richiesta la password:

ssh -S ~/.ssh/<socket> <host>

Se abbiamo necessità di aprire una connessione indipendente possiamo specificare un socket nullo:

ssh -S none <host>

Se vogliamo rendere permanente questo comportamento possiamo inserire le sequenti linee nel nostro ~/.ssh/config, adattandole alle nostre necessità.

Host <host>
ControlMaster auto
ControlPath ~/.ssh/cm_socket-%r@%h:%p
ControlPersist 1

Di seguito riporto il significato dei parametri come descritti nella pagina di manuale:

ControlMaster auto
try to use a master connection but fall back to creating a new one if one does not already exist.
ControlPath ~/.ssh/cm_socket-%r@%h:%p
Specify the path to the control socket used for connection sharing
ControlPersist 1
specifies that the master connection should remain open in the background (waiting for future client connections) after the initial client connection has been closed.