Persistenza automatica utilizzando OpenSSH
Puoi anche usare il ControlMaster
funzionalità di OpenSSH, che apre un socket di dominio unix per la prima connessione e riutilizza questa connessione in tutte le chiamate successive.
Per abilitare la funzione, puoi utilizzare -M
come opzione della riga di comando o abilitare ControlMaster
opzione nel tuo ~/.ssh/ssh_config
, ad esempio:
ControlMaster auto
Inoltre, dovresti impostare ControlPath
utilizzando le seguenti righe nel tuo ~/.ssh/ssh_config
:
Host *
ControlPath ~/.ssh/master-%[email protected]%h:%p
Per mantenere una connessione persistente a un host, ad es. se vuoi eseguire uno script che necessita di stabilire molte connessioni ssh all'host, nessuna delle quali persistente per tutta la vita dello script, puoi avviare una connessione silenziosa in anticipo usando:
ssh -MNf remotehost
Cheerio,nesono
Non sono sicuro che possa essere utilizzato in produzione, ma puoi fare qualcosa del genere:
crea il file su #1
1> touch /tmp/commands
Quindi esegui il comando:
1> tail -f /tmp/commands | ssh [email protected]
Questo aprirà il file /tmp/commands e inizierà a inviare il suo contenuto al server x.x.x.x (#2) e lo eseguirà riga per riga
ora, ogni volta che succede qualcosa su #1 fai:
1> echo "ls -l" >> /tmp/commands
o
1> echo "reboot" >> /tmp/commands
qualsiasi cosa tu aggiunga al file /tmp/commands verrà inviata a #2 ed eseguita. Assicurati solo di non eseguire nulla di interattivo o di gestirlo in qualche modo.
In /etc/ssh/ssh_config
aggiungi
# Send keep alive signal to remote sshd
ServerAliveInterval 60