Ich habe einen SSH-Tunnel wie folgt eingerichtet:
ssh -N -L 1105:remote.server:25 office-machine&
Ich möchte ein Skript schreiben, das beispielsweise einmal pro Minute eine Prüfung einrichtet (was ich vielleicht mit einem Cron-Job machen kann), die prüft, ob diese Verbindung aktiv ist, und andernfalls die Verbindung einrichtet (wenn VPN aktiviert ist).
Was muss ich tun, um die Prüfung für den SSH-Tunnel durchzuführen?
Dank im Voraus.
PS: Ich habe es versucht
autossh -N -L 1105:remote.server:25 office-machine&
aber es wird beendet. Ich vermute, dass die Optionen richtig sind. Tatsächlich gibt die Manpage/Hilfe an, dass es keine Optionen -N und -L gibt, sondern nur -f und -M.
Antwort1
autossh
Sie können hierfür verwenden . Zitierendie Ubuntu-Manpage:
autossh is a program to start a copy of ssh and monitor it, restarting it as necessary
should it die or stop passing traffic.
The original idea and the mechanism were from rstunnel (Reliable SSH Tunnel). With version
1.2 of autossh the method changed: autossh uses ssh to construct a loop of ssh forwardings
(one from local to remote, one from remote to local), and then sends test data that it
expects to get back. (The idea is thanks to Terrence Martin.)
Daher muss ein zusätzlicher Überwachungsport angegeben werden autossh
. Wählen Sie einen Port N, so dass sowohl N als auch N+1 frei sind, und verwenden Sie ihn mit der -M
Option, z. B.
autossh -M 20000 -N -L 1105:remote.server:25 office-machine
Sie können die Überwachung auch mit deaktivieren -M 0
. Auf Debian-basierten Systemen autossh
kann automatisch ein freier Port für die Überwachung ausgewählt werden.
Wenn Ihre VPN-Verbindung abbricht, autossh
sollten Sie über den Überwachungsport feststellen, dass die SSH-Verbindung nicht mehr aktiv ist, und dann versuchen, sie neu zu starten. Danach:
Continued failures
If the ssh connection fails and attempts to restart it fail in quick succession, autossh
will start delaying its attempts to restart, gradually backing farther and farther off up to
a maximum interval of the autossh poll time (usually 10 minutes). autossh can be "prodded"
to retry by signalling it, perhaps with SIGHUP ("kill -HUP").