Artikel teilen

group24 Newsletter

Nichts mehr verpassen

Als Abonnent unseres Newsletters sind Sie immer einen Schritt voraus und erhalten als Erster exklusive Informationen. Erfahren Sie mehr über attraktive Rabattaktionen, informieren Sie sich über das Neueste aus der IT-Welt und erfahren Sie Aktuelles zu unseren Services.

Newsletter abonnieren
Avatar photo
Philipp Lagrange
IT-Consultant 9 Min 12.09.2024

AutoSSH: Die ultimative Lösung für sichere und zuverlässige SSH-Verbindungen

Die Aufrechterhaltung einer stabilen SSH-Verbindung zu einem entfernten Server kann manchmal eine echte Herausforderung sein. Wenn Sie jemals mitten in einer wichtigen Aufgabe waren und plötzlich die Verbindung verloren haben, wissen Sie, wie frustrierend das sein kann. Es gibt jedoch eine Lösung, die nicht nur die Zuverlässigkeit Ihrer SSH-Verbindungen drastisch verbessert, sondern auch für Sicherheit und Automatisierung sorgt. Lassen Sie uns einen Blick in die Welt von „AutoSSH“ werfen – Ihrer verlässlichen Lösung für SSH-Verbindungen. AutoSSH ist die Antwort auf die Bedürfnisse von SSH-Nutzern und Administratoren nach Stabilität und Zuverlässigkeit. In diesem Artikel erfahren Sie, wie AutoSSH Probleme mit Verbindungsabbrüchen löst, wie es funktioniert und warum es die Zukunft der SSH-Kommunikation ist.

Was ist AutoSSH einfach erklärt?

AutoSSH ist ein Tool, mit dem SSH-Sitzungen (Secure Shell) überwacht und bei Bedarf automatisch neu gestartet werden können. SSH wird häufig verwendet, um sicher auf entfernte Server zuzugreifen und Befehle auszuführen oder Dateien zu übertragen. Wenn eine SSH-Verbindung aus irgendeinem Grund unterbrochen wird, z. B. aufgrund von Netzwerkproblemen, wird sie normalerweise beendet und muss manuell neu gestartet werden. AutoSSH überwacht die SSH-Verbindung und stellt sicher, dass sie aufrechterhalten bleibt. Wenn die Verbindung unterbrochen wird, startet AutoSSH sie automatisch neu. Es verwendet einen speziellen Überwachungsmechanismus, um die Verbindung regelmäßig zu überprüfen. AutoSSH startet eine kleine Schleife, die regelmäßig überprüft, ob die SSH-Verbindung noch aktiv ist. Ist dies nicht der Fall, wird die Verbindung automatisch neu aufgebaut.

Funktionsweise von AutoSSH

AutoSSH funktioniert, indem es eine zusätzliche Überwachungs- und Wiederherstellungsschicht über eine reguläre SSH-Verbindung legt. Hier ist eine detaillierte Beschreibung, wie AutoSSH funktioniert:

  1. Initiale SSH-Verbindung: AutoSSH startet eine normale SSH-Verbindung, ähnlich wie man es manuell tun würde. Diese Verbindung kann für Remote-Shell-Zugriffe, Dateiübertragungen oder Tunneling verwendet werden.
  2. Überwachungsmechanismus: Zusätzlich zur SSH-Verbindung startet AutoSSH einen Überwachungsprozess. Dieser Prozess verwendet einen speziellen „Check-Port“ (entweder einen separaten TCP-Port oder eine Loopback-Verbindung), um regelmäßig den Status der SSH-Verbindung zu überprüfen.
  3. Regelmäßige Überprüfungen: Der Überwachungsprozess sendet in regelmäßigen Abständen kleine Pakete (Keep-Alive-Nachrichten) über die SSH-Verbindung und überwacht die Antworten. Wenn die Verbindung funktioniert, sollten diese Nachrichten ohne Probleme gesendet und empfangen werden.
  4. Erkennen von Verbindungsproblemen: Wenn AutoSSH feststellt, dass die Keep-Alive-Meldungen nicht mehr erfolgreich gesendet oder empfangen werden können (weil die Verbindung unterbrochen ist), wird dies als Hinweis auf einen Ausfall der SSH-Verbindung gewertet.
  5. Neustart der Verbindung: Sobald ein Verbindungsproblem erkannt wird, beendet AutoSSH die fehlerhafte SSH-Verbindung und startet sie automatisch neu. Dieser Neustart erfolgt im Hintergrund und versucht, die Verbindung so schnell wie möglich wiederherzustellen.
  6. Kontinuierliche Überwachung: Nach dem Neustart der Verbindung setzt AutoSSH die Überwachung fort, um sicherzustellen, dass die Verbindung stabil bleibt. Dieser Zyklus aus Überwachung, Erkennung und Wiederherstellung wiederholt sich ständig.

Vorteile von AutoSSH im Vergleich zu herkömmlichen SSH-Verbindungen

AutoSSH bietet mehrere Vorteile gegenüber herkömmlichen SSH-Verbindungen, insbesondere in Szenarien, in denen eine stabile und dauerhafte Verbindung erforderlich ist. Die wichtigsten Vorteile sind

  • Automatische Wiederherstellung der Verbindung: Während herkömmliche SSH-Verbindungen nach einer Unterbrechung manuell neu aufgebaut werden müssen, geschieht dies bei AutoSSH automatisch. Dies ist besonders nützlich für Anwendungen oder Benutzer, die eine ununterbrochene Verbindung benötigen.
  • Zuverlässigkeit und Stabilität: Durch regelmäßige Überwachung und automatische Wiederherstellung sorgt AutoSSH für eine höhere Verfügbarkeit und Stabilität der Verbindung. Dies ist wichtig für kritische Anwendungen, die eine ununterbrochene Verbindung zu einem entfernten Server benötigen.
  • Zeitersparnis: Da AutoSSH die Verbindung automatisch wiederherstellt, spart es dem Benutzer Zeit und Mühe, da er sich nicht manuell um die Wiederherstellung der Verbindung kümmern muss.
  • Einfache Implementierung: AutoSSH ist einfach zu konfigurieren und erfordert keine größeren Änderungen an bestehenden SSH-Konfigurationen. Es kann nahtlos in bestehende Arbeitsabläufe integriert werden.
  • Reduzierung von Ausfallzeiten: Durch die schnelle Erkennung und Wiederherstellung unterbrochener Verbindungen reduziert AutoSSH Ausfallzeiten, was besonders in Umgebungen mit instabilen Netzwerken von Vorteil ist.
  • Monitoring-Funktionen: AutoSSH bietet eingebaute Überwachungsfunktionen, die es ermöglichen, den Status der Verbindung kontinuierlich zu überwachen. Dies kann helfen, potentielle Probleme frühzeitig zu erkennen und zu beheben.
  • Flexibilität: AutoSSH unterstützt verschiedene Optionen und Konfigurationsparameter, die es ermöglichen, das Verhalten an die spezifischen Bedürfnisse und Anforderungen des Benutzers anzupassen.
  • Verbesserte Benutzererfahrung: Benutzer, die auf stabile Remote-Verbindungen angewiesen sind, profitieren von einer verbesserten Benutzererfahrung, da sie sich weniger Sorgen über Verbindungsabbrüche machen müssen und sich auf ihre eigentliche Arbeit konzentrieren können.

Zusammenfassend bietet AutoSSH eine zuverlässigere, stabilere und benutzerfreundlichere Lösung für die Verwaltung von SSH-Verbindungen, insbesondere in Umgebungen, in denen eine kontinuierliche Verbindung unerlässlich ist.

Einsatzbereiche: Praktische Anwendungsszenarien für AutoSSH

AutoSSH ist ein sehr nützliches Werkzeug für Szenarien, in denen stabile und dauerhafte SSH-Verbindungen erforderlich sind. Ein Hauptanwendungsgebiet ist die Remote-Systemadministration. Systemadministratoren verwenden AutoSSH, um dauerhafte Verbindungen zu entfernten Servern aufrechtzuerhalten, was besonders bei der Verwaltung von Servern an verschiedenen geografischen Standorten wertvoll ist.

Ein weiteres wichtiges Anwendungsgebiet ist das Tunneling und Portforwarding. AutoSSH kann persistente SSH-Tunnel für sichere Verbindungen zwischen Netzwerken bereitstellen, was besonders für Anwendungen nützlich ist, die kontinuierlich auf entfernte Dienste zugreifen müssen, wie z. B. Datenbankverbindungen oder interne Webanwendungen.

AutoSSH bietet auch große Vorteile in Entwicklungsumgebungen. Entwickler, die auf entfernten Servern arbeiten oder kontinuierliche Integrations- und Deployment-Prozesse verwenden, können mit AutoSSH ihre SSH-Verbindungen stabil halten.

AutoSSH ist auch ideal für die Dateisynchronisation. Tools wie rsync, die über SSH laufen, profitieren von der stabilen Verbindung, da Dateiübertragungen bei Verbindungsabbrüchen automatisch wieder aufgenommen werden.

Schließlich ist AutoSSH auch für IoT- und Edge-Computing-Anwendungen von großem Nutzen. Geräte, die auf entfernte Server zugreifen müssen, können mithilfe von AutoSSH eine stabile Verbindung sicherstellen, die für eine kontinuierliche Datenübertragung und Überwachung unerlässlich ist.

Weitere Anwendungsbereiche sind der Einsatz als VPN-Alternative, die Unterstützung von Remote-Workstations und die Sicherheitsüberwachung.

Tipps und Tricks für die optimale Konfiguration und Verwendung von AutoSSH

Hier sind einige Tipps und Tricks zur optimalen Konfiguration und Verwendung von AutoSSH, um stabile und zuverlässige SSH-Verbindungen zu gewährleisten:

1. Grundlegende Einrichtung

Installieren Sie AutoSSH über Ihre Paketverwaltung. Auf Debian-basierten Systemen können Sie beispielsweise den Befehl sudo apt-get install autossh verwenden. Starten Sie eine AutoSSH-Verbindung mit einem einfachen Befehl wie autossh -M 0 -N -L 8080:localhost:80 user@remotehost. Der Parameter -M aktiviert das Monitoring, wobei 0 den internen Port von AutoSSH verwendet.

2. Setzen des Überwachungsports

Verwenden Sie den Parameter -M gefolgt von einer Portnummer, um den Überwachungsport zu setzen. Beispiel: autossh -M 20000 -N -L 8080:localhost:80 user@remotehost bewirkt, dass AutoSSH die Verbindung auf Port 20000 überwacht und bei Bedarf neu startet.

3. Konfigurieren Sie Keep-Alive-Nachrichten

Aktivieren Sie Keep-Alive-Nachrichten, um sicherzustellen, dass die Verbindung aktiv bleibt. Fügen Sie dazu die folgenden Optionen in Ihre SSH-Konfigurationsdatei (~/.ssh/config) ein: Host * ServerAliveInterval 60 ServerAliveCountMax 3 Dadurch wird der SSH-Client alle 60 Sekunden eine Keep-Alive-Nachricht senden und die Verbindung nach drei fehlgeschlagenen Versuchen neu starten.

4. Passen Sie die Verbindungstests an

Passen Sie die Häufigkeit der Verbindungstests mit den AutoSSH-Parametern -M und -f an. Beispiel: autossh -M 20000 -f -N -L 8080:localhost:80 user@remotehost startet AutoSSH im Hintergrund und überwacht die Verbindung auf Port 20000.

5. Protokollierung aktivieren

Aktivieren Sie die Protokollierung, um Verbindungsprobleme diagnostizieren zu können. Setzen Sie die Umgebungsvariable AUTOSSH_DEBUG auf 1, um detaillierte Informationen zu erhalten, und starten Sie AutoSSH mit dem entsprechenden Befehl.

6. Automatischer Neustart mit Systemd

Erstellen Sie eine Systemd-Dienstdatei, um AutoSSH beim Systemstart automatisch zu starten. Speichern Sie die Konfiguration und aktivieren Sie den Dienst mit sudo systemctl enable autossh. Anschließend starten Sie den Dienst mit sudo systemctl start autossh.

7. Maximale Anzahl der Verbindungsversuche begrenzen

Um eine Endlosschleife zu vermeiden, setzen Sie die Umgebungsvariable AUTOSSH_GATETIME, die die minimale Zeitspanne zwischen Verbindungsneustarts definiert. Beispiel: export AUTOSSH_GATETIME=30.

8. SSH-Schlüssel verwenden

Verwenden Sie SSH-Schlüssel für passwortlose Authentifizierung, um die Automatisierung zu erleichtern. Generieren Sie einen Schlüssel mit ssh-keygen und fügen Sie den öffentlichen Schlüssel der Datei ~/.ssh/authorized_keys auf dem entfernten Server hinzu.

    Sichere Remote-Zugriffe mit AutoSSH: Schritt-für-Schritt-Anleitung

    Angenommen man befindet sich in einem Kundenprojekt oder betreibt Managed Services, dann ist es oftmals erforderlich, jederzeit auf Systeme beim Kunden (natürlich nur mit Erlaubnis) zugreifen zu können.

    Folgendes Szenario ist gegeben:

    Es gibt einen Mgmt-Server der erreicht werden will, jedoch befindet sich dieser hinter einer Firewall und ist nicht direkt per Public IP erreichbar.

    Tunnel vom Mgmt-Server zum Web-Server

    Ziel soll es sein, mittels SSH einen Tunnel vom Mgmt-Server zum Web-Server aufzubauen, sodass vom Web-Server aus über diesen Tunnel aus der Ferne auf den Mgmt-Server im Firmen-Netz zugegriffen werden kann. Im Anschluss nutzen wir AutoSSH um die Verbindung aufzubauen, zu überwachen und im Fehlerfall wieder aufzubauen.

    Wir zeigen dies mit den Servern Amsterdam (interner Server) und Stockholm (Web-Server), beide mit Ubuntu 22.04 .

    Um zu verdeutlichen, dass der Zugriff über den Tunnel erfolgt, installieren wir auf dem internen Mgmt-Server den Webserver Apache2 (mittels „apt install apache2“) und passen die Konfigurations-Datei unter „/etc/apache2/ports.conf“ wie folgt an:

    autossh apt install apache2

    Die Zeile „Listen 127.0.0.1:80“ bewirkt, dass der Webserver lediglich auf Verbindungen mit dem Loopback Interface reagiert. Somit ist ein Aufruf nur möglich, wenn man vorher via SSH-Tunnel auf das System gelangt ist.

    SSH-Verbindung zum Server Stockholm aufbauen

    Anschließend bauen wir vom internen Server Amsterdam aus eine SSH-Verbindung zum Server Stockholm auf.

    Die Parameter bedeuten folgendes:

    • -R : sorgt dafür dass ein „Remote“ Tunnel, also Tunnel von der Gegenseite aus zum eigenen System hin erstellt wird.
    • 8888:localhost:80 : Dies sorgt dafür, dass auf der Gegenstelle (Stockholm) der Port 8888 genutzt wird um auf den lokalen Server (Amsterdamm) auf Port 80 zuzugreifen.
    • -p 2222 : Dieser Parameter wird genutzt, um anstelle des Default SSH Ports den Port 2222 zu nutzen. Dieser wurde vorher im SSH Server angepasst.
    auto ssh parameter

    Anschließend kann man auf dem Server Stockholm mit Hilfe des Tools Netstat sehen, dass der User port_forwarding_test den lokalen Port 8888 geöffnet hat:

    autossh port forwarding test

    Wenn wir nun mit dem Tool “curl” diesen lokalen Port auf dem Server Stockholm aufrufen, erscheint die Antwort des HTTP-Server der internen Maschine Amsterdam:

    auto ssh curl

    SSH-Config-Datei

    Damit der Aufbau des Tunnels seitens des Servers Amsterdam möglichst unkompliziert abläuft, empfiehlt es sich, alle Parameter der Gegenstelle in die SSH-Config-Datei zu schreiben:

    ssh config datei

    In diesem Fall haben wir den Hostnamen stockholm_test mit den benötigten Parametern versehen. Es wird anstelle eines Passworts ein Keyfile (IdentityFile) verwendet.

    Der Tunnel könnte nun seitens “Amsterdam” mit dem Befehl “SSH Stockholm_test” aufgebaut werden.

    Da es aber aus diversen Gründen (Internet beim Kunden ist kurz weg, Wartungsarbeiten am Netz) empfehlenswert ist, dass der Tunnel bei Abbruch automatisch wieder aufgebaut wird, nutzen wir das Tool AutoSSH und richten es als Systemdienst ein.

    Dazu erzeugen wir die Datei /etc/systemd/system/autossh_stockholm.service und befüllen sie wie folgt:

    /etc/systemd/system/autossh_stockholm.service

    Ggf. muss der Befehl “systemctl daemon-reload” ausgeführt werden, damit die neue Konfigurationsdatei erkannt wird.

    Anschließend kann der neue Dienst mittels “systemctl start autossh_stockholm.service” gestartet werden.

    Wenn nun die Gegenseite neu gestartet wird, bricht der Tunnel ab, wird von AutoSSH jedoch wieder neu aufgebaut, was durch den Befehl “systemctl status autossh_stockholm.service” im Log zu sehen ist:

    Inhaltsverzeichnis

    Inhaltsverzeichnis

      Newsletter