Automatische Persistenz mit OpenSSH
Sie können auch den ControlMaster
verwenden Feature von OpenSSH, das einen Unix-Domain-Socket für die erste Verbindung öffnet und diese Verbindung in allen nachfolgenden Aufrufen wiederverwendet.
Um die Funktion zu aktivieren, können Sie entweder -M
verwenden als Befehlszeilenschalter oder aktivieren Sie ControlMaster
Option in Ihrem ~/.ssh/ssh_config
, z. B.:
ControlMaster auto
Zusätzlich sollten Sie den ControlPath
setzen Verwenden Sie die folgenden Zeilen in Ihrem ~/.ssh/ssh_config
:
Host *
ControlPath ~/.ssh/master-%[email protected]%h:%p
Um eine dauerhafte Verbindung zu einem Host aufrechtzuerhalten, z. Wenn Sie ein Skript ausführen möchten, das viele SSH-Verbindungen zum Host herstellen muss, von denen keine über die gesamte Lebensdauer des Skripts bestehen bleibt, können Sie im Voraus eine stille Verbindung starten mit:
ssh -MNf remotehost
Tschüss, nesono
Nicht sicher, ob es in der Produktion verwendet werden kann, aber Sie können so etwas tun:
Datei auf #1 erstellen
1> touch /tmp/commands
Führen Sie dann den Befehl aus:
1> tail -f /tmp/commands | ssh [email protected]
Dadurch wird die Datei /tmp/commands geöffnet und ihr Inhalt an den Server x.x.x.x (#2) gesendet und dort Zeile für Zeile ausgeführt
Nun, jedes Mal, wenn etwas auf #1 passiert:
1> echo "ls -l" >> /tmp/commands
oder
1> echo "reboot" >> /tmp/commands
Was auch immer Sie zur Datei /tmp/commands hinzufügen, wird an #2 gesendet und ausgeführt. Stellen Sie nur sicher, dass Sie nichts Interaktives ausführen oder irgendwie damit umgehen.
In /etc/ssh/ssh_config
hinzufügen
# Send keep alive signal to remote sshd
ServerAliveInterval 60