Android

Ssh tunneling einrichten (port forwarding)

FRITZBox Portfreigaben Was sind Portweiterleitungen? Tutorial Deutsch | iDomiX

FRITZBox Portfreigaben Was sind Portweiterleitungen? Tutorial Deutsch | iDomiX

Inhaltsverzeichnis:

Anonim

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

Die SSH-Weiterleitung ist nützlich, um Netzwerkdaten von Diensten zu transportieren, die ein unverschlüsseltes Protokoll verwenden, z. B. VNC oder FTP, auf geografisch eingeschränkte Inhalte zuzugreifen oder zwischengeschaltete Firewalls zu umgehen. Grundsätzlich können Sie jeden TCP-Port weiterleiten und den Datenverkehr über eine sichere SSH-Verbindung tunneln.

Es gibt drei Arten der SSH-Portweiterleitung:

  • Lokale Portweiterleitung. - Leitet eine Verbindung vom Client-Host zum SSH-Server-Host und dann zum Ziel-Host-Port weiter. - Leitet einen Port vom Serverhost an den Clienthost und dann an den Zielhostport weiter. Dynamische Portweiterleitung. - Erstellt einen SOCKS-Proxy-Server, der die Kommunikation über eine Reihe von Ports ermöglicht.

Wir werden darüber sprechen, wie lokale, entfernte und dynamisch verschlüsselte SSH-Tunnel eingerichtet werden.

Lokale Portweiterleitung

Mit der lokalen Portweiterleitung können Sie einen Port auf dem lokalen Computer (SSH-Client) an einen Port auf dem Remote-Computer (SSH-Server) weiterleiten, der dann an einen Port auf dem Zielcomputer weitergeleitet wird.

Bei dieser Art der Weiterleitung überwacht der SSH-Client einen bestimmten Port und tunnelt jede Verbindung zu diesem Port zu dem angegebenen Port auf dem Remote-SSH-Server, der dann eine Verbindung zu einem Port auf dem Zielcomputer herstellt. Der Zielcomputer kann der Remote-SSH-Server oder ein beliebiger anderer Computer sein.

Lokale Portweiterleitung wird meistens verwendet, um eine Verbindung zu einem Remotedienst in einem internen Netzwerk wie einer Datenbank oder einem VNC-Server herzustellen.

Wenn Sie unter Linux, MacOS und anderen Unix-Systemen eine lokale Portweiterleitung erstellen, übergeben Sie die Option -L an den ssh Client:

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Folgende Optionen werden verwendet:

  • LOCAL_PORT - Die IP- LOCAL_PORT und die Portnummer des lokalen Computers. Wenn LOCAL_IP weggelassen wird, bindet der ssh-Client an localhost. DESTINATION:DESTINATION_PORT - Die IP oder der Hostname und der Port des DESTINATION:DESTINATION_PORT . SERVER_IP - Die IP-Adresse des Remote-SSH-Benutzers und des Servers.

Sie können eine beliebige Portnummer größer als 1024 als LOCAL_PORT . Ports mit einer Nummer unter 1024 sind privilegierte Ports und können nur von root verwendet werden. Wenn Ihr SSH-Server einen anderen Port als 22 -p (Standardeinstellung), verwenden Sie die Option -p .

Der Zielhostname muss vom SSH-Server auflösbar sein.

db001.host , Sie haben einen MySQL-Datenbankserver auf der Maschine db001.host in einem internen (privaten) Netzwerk an Port 3306, auf den von der Maschine pub001.host aus pub001.host und Sie möchten mit Ihrem lokalen Maschinen- mysql Client eine Verbindung zum Datenbankserver herstellen. Dazu können Sie die Verbindung wie folgt weiterleiten:

ssh -L 3336:db001.host:3306 [email protected]

Sobald Sie den Befehl ausführen, werden Sie aufgefordert, das Remote-SSH-Benutzerkennwort einzugeben. Nach der Eingabe werden Sie am Remote-Server angemeldet und der SSH-Tunnel wird aufgebaut. Es ist eine gute Idee, eine SSH-Schlüssel-basierte Authentifizierung einzurichten und eine Verbindung zum Server herzustellen, ohne ein Kennwort einzugeben.

Wenn Sie nun Ihren lokalen Maschinendatenbank-Client auf 127.0.0.1:3336 verweisen, wird die Verbindung über die Maschine pub001.host , die als Zwischenserver fungiert, an den MySQL-Server pub001.host weitergeleitet.

Sie können mit einem einzigen ssh-Befehl mehrere Ports an mehrere Ziele weiterleiten. Sie haben beispielsweise einen anderen MySQL-Datenbankserver auf der Maschine db002.host und möchten von Ihrem lokalen Client aus, den Sie ausführen würden, eine Verbindung zu beiden Servern herstellen:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

Um eine Verbindung zum zweiten Server herzustellen, würden Sie 127.0.0.1:3337 .

Wenn der Zielhost mit dem SSH-Server identisch ist, können Sie localhost verwenden, anstatt die IP-Adresse oder den Hostnamen des Zielhosts anzugeben.

Angenommen, Sie müssen über VNC eine Verbindung zu einem Remotecomputer herstellen, der auf demselben Server ausgeführt wird und von außen nicht zugänglich ist. Der Befehl, den Sie verwenden würden, lautet:

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

Die Option -f weist den Befehl ssh an, im Hintergrund ausgeführt zu werden und -N keinen Remote-Befehl auszuführen. Wir verwenden localhost weil der VNC- und der SSH-Server auf demselben Host ausgeführt werden.

Remote-Port-Weiterleitung

Remote Port Forwarding ist das Gegenteil von Local Port Forwarding. Sie können einen Port auf dem Remote-Computer (SSH-Server) an einen Port auf dem lokalen Computer (SSH-Client) weiterleiten, der dann an einen Port auf dem Zielcomputer weitergeleitet wird.

Bei dieser Art der Weiterleitung überwacht der SSH-Server einen bestimmten Port und tunnelt jede Verbindung zu diesem Port zu dem angegebenen Port auf dem lokalen SSH-Client, der dann eine Verbindung zu einem Port auf dem Zielcomputer herstellt. Der Zielrechner kann der lokale oder ein beliebiger anderer Rechner sein.

Wenn Sie unter Linux, MacOS und anderen Unix-Systemen eine Remote-Port-Weiterleitung erstellen, übergeben Sie die Option -R an den ssh Client:

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Folgende Optionen werden verwendet:

  • REMOTE_PORT - Die IP und die Portnummer auf dem Remote-SSH-Server. Eine leere REMOTE bedeutet, dass der entfernte SSH-Server an alle Schnittstellen REMOTE wird. DESTINATION:DESTINATION_PORT - Die IP oder der Hostname und der Port des DESTINATION:DESTINATION_PORT . SERVER_IP - Die IP-Adresse des Remote-SSH-Benutzers und des Servers.

Lokale Portweiterleitung wird meistens verwendet, um jemandem von außerhalb Zugriff auf einen internen Dienst zu gewähren.

Angenommen, Sie entwickeln eine Webanwendung auf Ihrem lokalen Computer und möchten Ihrem Mitentwickler eine Vorschau anzeigen. Sie haben keine öffentliche IP, sodass der andere Entwickler nicht über das Internet auf die Anwendung zugreifen kann.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

Der obige Befehl veranlasst ssh server, Port 8080 abzuhören und den gesamten Datenverkehr von diesem Port zu Ihrem lokalen Computer auf Port 3000 tunneln.

Jetzt kann Ihr Mitentwickler the_ssh_server_ip:8080 in seinen Browser the_ssh_server_ip:8080 und eine Vorschau Ihrer großartigen Anwendung the_ssh_server_ip:8080 .

Dynamische Portweiterleitung

Mithilfe der dynamischen Portweiterleitung können Sie auf dem lokalen Computer (SSH-Client) einen Socket erstellen, der als SOCKS-Proxyserver fungiert. Wenn ein Client eine Verbindung zu diesem Port herstellt, wird die Verbindung an den Remote-Computer (SSH-Server) weitergeleitet, der dann an einen dynamischen Port auf dem Zielcomputer weitergeleitet wird.

Auf diese Weise stellen alle Anwendungen, die den SOCKS-Proxy verwenden, eine Verbindung zum SSH-Server her und der Server leitet den gesamten Datenverkehr an sein tatsächliches Ziel weiter.

Unter Linux, macOS und anderen Unix-Systemen, um eine dynamische Portweiterleitung (SOCKS) zu erstellen, übergeben Sie die Option -D an den ssh Client:

ssh -D LOCAL_PORT SSH_SERVER

Folgende Optionen werden verwendet:

  • LOCAL_PORT - Die IP- LOCAL_PORT und die Portnummer des lokalen Computers. Wenn LOCAL_IP weggelassen wird, bindet der ssh-Client an localhost. SERVER_IP - Die IP-Adresse des Remote-SSH-Benutzers und des Servers.

Ein typisches Beispiel für eine dynamische Portweiterleitung ist das Tunneln des Webbrowser-Datenverkehrs über einen SSH-Server.

Der folgende Befehl erstellt einen SOCKS-Tunnel an Port 9090 :

ssh -D 9090 -N -f [email protected]

Sobald das Tunneling eingerichtet ist, können Sie Ihre Anwendung für die Verwendung konfigurieren. In diesem Artikel wird erläutert, wie Sie Firefox und den Google Chrome-Browser für die Verwendung des SOCKS-Proxys konfigurieren.

Die Portweiterleitung muss für jede Anwendung, für die Sie den Datenverkehr tunneln möchten, separat konfiguriert werden.

Richten Sie SSH-Tunneling in Windows ein

Windows-Benutzer können mit dem PuTTY-SSH-Client SSH-Tunnel erstellen. Sie können PuTTY hier herunterladen.

  1. Starten Sie Putty und geben Sie die IP-Adresse des SSH-Servers in das Feld Host name (or IP address) ein.

    Ein neues Fenster, in dem Sie nach Ihrem Benutzernamen und Passwort gefragt werden, wird angezeigt. Sobald Sie Ihren Benutzernamen und Ihr Passwort eingegeben haben, werden Sie an Ihrem Server angemeldet und der SSH-Tunnel wird gestartet.

    Wenn Sie die Authentifizierung mit öffentlichem Schlüssel einrichten, können Sie eine Verbindung zu Ihrem Server herstellen, ohne ein Kennwort eingeben zu müssen.

Fazit

Wir haben Ihnen gezeigt, wie Sie SSH-Tunnel einrichten und den Datenverkehr über eine sichere SSH-Verbindung weiterleiten. Zur Vereinfachung der Verwendung können Sie den SSH-Tunnel in Ihrer SSH-Konfigurationsdatei definieren oder einen Bash-Alias ​​erstellen, mit dem der SSH-Tunnel eingerichtet wird.

SSH-Sicherheit