GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man einen SSH-Tunnel zuverlässig offen halten?

Klingt so, als ob Sie Autossh brauchen. Dadurch wird ein SSH-Tunnel überwacht und bei Bedarf neu gestartet. Wir verwenden es seit einigen Jahren und es scheint gut zu funktionieren.

autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C

Weitere Details zum Parameter -M hier


Alle zustandsbehafteten Firewalls vergessen eine Verbindung, nachdem sie für einige Zeit kein Paket für diese Verbindung gesehen haben (um zu verhindern, dass die Zustandstabellen voller Verbindungen werden, bei denen beide Enden gestorben sind, ohne die Verbindung zu schließen). Die meisten TCP-Implementierungen senden ein Keepalive-Paket nach langer Zeit, ohne etwas von der anderen Seite zu hören (2 Stunden ist ein üblicher Wert). Wenn es jedoch eine Stateful-Firewall gibt, die die Verbindung vergisst, bevor die Keepalive-Pakete gesendet werden können, wird eine langlebige, aber inaktive Verbindung sterben.

Wenn dies der Fall ist, besteht die Lösung darin, zu verhindern, dass die Verbindung in den Leerlauf gerät. OpenSSH hat eine Option namens ServerAliveInterval, die verwendet werden kann, um zu verhindern, dass die Verbindung zu lange im Leerlauf ist (als Bonus erkennt es früher, wenn der Peer stirbt, selbst wenn die Verbindung im Leerlauf ist).


Ich habe das folgende Bash-Skript verwendet, um immer wieder neue SSH-Tunnel zu erzeugen, wenn der vorherige stirbt. Die Verwendung eines Skripts ist praktisch, wenn Sie keine zusätzlichen Pakete installieren oder den Compiler verwenden möchten oder können.

while true
do
  ssh <ssh_options> [[email protected]]hostname
  sleep 15
done

Beachten Sie, dass dies eine Schlüsseldatei erfordert, um die Verbindung automatisch herzustellen, aber das ist auch bei Autossh der Fall.


Linux
  1. So erhöhen Sie das Timeout der SSH-Verbindung

  2. So überprüfen Sie die Geschwindigkeit Ihrer SSH-Verbindung

  3. Wie kann man eine nicht reagierende SSH-Verbindung unter Linux beenden?

  4. Wie konfiguriere ich Schriftarten auf einer Remote-X-Verbindung (xdmcp vs. Ssh)?

  5. So richten Sie einen Reverse-SSH-Tunnel unter Linux ein

Ssh – Wie funktioniert Reverse-SSH-Tunneling?

So halten Sie Remote-SSH-Sitzungen nach der Trennung am Laufen

So verhindern Sie, dass SSH die Verbindung trennt, wenn es eine Weile inaktiv war

So erkennen Sie, ob eine ssh-ControlMaster-Verbindung verwendet wird

Wie richte ich einen SSH-Tunnel ein, um SSH weiterzuleiten?

SSH-Verbindung über einen Reverse (Remote) SSH-Tunnel