Persistencia automática usando OpenSSH
También puedes usar el ControlMaster
función de OpenSSH, que abre un socket de dominio Unix para la primera conexión y reutiliza esta conexión en todas las llamadas posteriores.
Para habilitar la función, puede usar -M
como el interruptor de línea de comando o habilite el ControlMaster
opción en su ~/.ssh/ssh_config
, por ejemplo:
ControlMaster auto
Además, debe configurar el ControlPath
usando las siguientes líneas en su ~/.ssh/ssh_config
:
Host *
ControlPath ~/.ssh/master-%[email protected]%h:%p
Para mantener una conexión persistente con un host, p. si desea ejecutar una secuencia de comandos que necesita establecer muchas conexiones ssh con el host, ninguna de las cuales persistirá durante toda la vida útil de la secuencia de comandos, puede iniciar una conexión silenciosa por adelantado utilizando:
ssh -MNf remotehost
Cheerio, nesono
No estoy seguro de si se puede usar en producción, pero puede hacer algo como esto:
crear archivo en #1
1> touch /tmp/commands
Luego ejecute el comando:
1> tail -f /tmp/commands | ssh [email protected]
Eso abrirá el archivo /tmp/commands y comenzará a enviar su contenido al servidor x.x.x.x (#2) y lo ejecutará allí línea por línea
ahora, cada vez que algo suceda en el #1 haz:
1> echo "ls -l" >> /tmp/commands
o
1> echo "reboot" >> /tmp/commands
todo lo que agregue al archivo /tmp/commands se enviará al #2 y se ejecutará. Solo asegúrese de no ejecutar nada interactivo, o tratarlo de alguna manera.
En /etc/ssh/ssh_config
añadir
# Send keep alive signal to remote sshd
ServerAliveInterval 60