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

So verwenden Sie SSH-Tunneling für den Zugriff auf eingeschränkte Server

Neben dem Senden von SSH-Daten kann das SSH-Protokoll auch anderen Datenverkehr zwischen zwei Hosts tunneln. Die häufigsten SSH-Tunnel sind remote und lokal.

SSH-Tunneling oder SSH-Portweiterleitung ist eine Methode zum Erstellen einer verschlüsselten SSH-Verbindung zwischen einem Client und einem Server, über die Dienstports weitergeleitet werden können.

Lokaler SSH-Tunnel mit Portweiterleitung

Sie können einen lokalen SSH-Tunnel verwenden, wenn Sie zu einer Ressource gelangen möchten, auf die Sie nicht direkt zugreifen können, aber ein SSH-Server, auf den Sie Zugriff haben, kann. Hier sind einige Szenarien.

Proxy zum Remote-Server

In der Abbildung oben kann der blaue Host http://192.168.0.3 nicht erreichen kann aber ssh zu 192.168.0.2. Der folgende SSH-Befehl wird auf dem blauen Host ausgeführt erlaubt dem blauen Host, den roten Host zu erreichen.

ssh -L 8080:192.168.0.3:80 [email protected]

Jetzt kann der blaue Host einen Browser öffnen, gehen Sie zu http://localhost:8080 , und die unter 192.168.0.3 gehostete Webseite angezeigt wird.

Lokale Portweiterleitung

In der obigen Abbildung möchte sich der blaue Host mit dem roten Host auf Port 80 verbinden, aber dazwischen befindet sich eine Firewall, die dies verweigert. Da der blaue Host per SSH mit dem roten Host kommunizieren kann, können wir einen lokalen Port-Weiterleitungs-SSH-Tunnel erstellen, um auf diesen Port zuzugreifen.

Der Befehl auf dem blauen Host lautet:

ssh -L 8080:192.168.0.2:80 [email protected]

Wenn jetzt der blaue Host einen Browser öffnet und zu http://localhost:8080 geht sie können sehen, was der rote Server an Port 80 hat.

Syntax für die lokale Portweiterleitung

Diese Syntax zum Erstellen eines lokalen SSH-Portweiterleitungstunnels lautet wie folgt:

ssh -L <LPORT>:<RHOST>:<RPORT> <GATEWAY>

Remote-SSH-Tunnel mit Portweiterleitung

In diesem Szenario erstellen wir einen Reverse-SSH-Tunnel. Hier können wir einen SSH-Tunnel in eine Richtung initiieren und dann diesen Tunnel verwenden, um einen SSH-Tunnel in die andere Richtung zu erstellen. Dies kann nützlich sein, wenn Sie einen Drohnencomputer in ein Netzwerk fallen lassen und möchten, dass er „nach Hause telefoniert“. Wenn es dann nach Hause telefoniert, können Sie sich über den eingerichteten SSH-Tunnel mit ihm verbinden.

Wir sind auf dem grünen Host und wollen ssh zum blauen Host. Die Firewall blockiert diese Verbindung jedoch direkt. Da der blaue Host ssh mit dem grünen Host verbinden kann, können wir uns damit verbinden, und wenn der grüne Host ssh zurück zum blauen Host möchte, kann er durch diesen zuvor eingerichteten Tunnel fahren.

Der blaue Host initiiert einen SSH-Tunnel wie diesen:

ssh -R 2222:localhost:22 [email protected]

Dadurch wird Port 2222 auf dem grünen Host geöffnet, der diesen dann an Port 22 auf dem blauen Host weiterleitet. Wenn also der grüne Host über Port 2222 eine SSH-Verbindung zu sich selbst herstellen würde, würde er den blauen Host erreichen.

Der grüne Host kann nun wie folgt eine SSH-Verbindung zum blauen Host herstellen:

ssh -p 2222 [email protected]

Verwendung der Option -N

Wenn Sie ssh verwenden, können Sie den -N angeben -Flag, das ssh mitteilt, dass Sie keine Befehle über die ssh-Verbindung senden müssen, wenn diese hergestellt ist. Diese Option wird häufig beim Erstellen von Tunneln verwendet, da wir oft keine Eingabeaufforderung benötigen.

Autossh

Der autossh Der Befehl wird verwendet, um Ihren Tunneln Persistenz hinzuzufügen. Die Aufgabe besteht darin, zu überprüfen, ob Ihre SSH-Verbindung aktiv ist, und falls nicht, eine herzustellen.

Hier ist ein autossh-Befehl, den Sie vielleicht kennen.

autossh -N -i /home/blueuser/.ssh/id_rsa -R 2222:localhost:22 [email protected]

Die -i /home/blueuser/.ssh/id_rsa Option besagt, dass ein Zertifikat verwendet werden soll, um diese SSH-Verbindung zu authentifizieren.

Wenn Ihr Tunnel jetzt ausfällt, versucht er automatisch, die Verbindung wiederherzustellen, und versucht es so lange, bis er erfolgreich ist. Um es bei einem Neustart dauerhaft zu machen, fügen Sie den ssh-Befehl als Cron-Job hinzu.


Linux
  1. So verwenden Sie die SSH- und SFTP-Protokolle in Ihrem Heimnetzwerk

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

  3. Verwenden Sie scp, um eine Datei auf verschiedene Server zu kopieren

  4. Wie scp über eine Zwischenmaschine?

  5. Zugriff nur über SSH-Tunneling

Linux-Hostdatei:Wie wird sie bearbeitet und verwendet?

So verwenden Sie SSH, um eine Verbindung zu einem Remote-Server herzustellen

So verwenden Sie einen SSH-Schlüssel mit Nicht-Root-Benutzern

Ssh – Wie funktioniert Reverse-SSH-Tunneling?

Wie verwende ich Secure Shell Access (SSH) über PuTTY?

So deaktivieren Sie die Überprüfung des SSH-Hostschlüssels in Linux