Startseite » wie man » So verwenden Sie SSH-Tunneling für den Zugriff auf eingeschränkte Server und das sichere Durchsuchen

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

    Ein SSH-Client stellt eine Verbindung zu einem Secure Shell-Server her, mit dem Sie Terminalbefehle ausführen können, als würden Sie vor einem anderen Computer sitzen. Mit einem SSH-Client können Sie jedoch auch einen Port zwischen Ihrem lokalen System und einem Remote-SSH-Server „tunneln“.

    Es gibt drei verschiedene Arten von SSH-Tunneln, die alle für unterschiedliche Zwecke verwendet werden. Bei jedem Server wird ein SSH-Server verwendet, um den Verkehr von einem Netzwerkport zu einem anderen umzuleiten. Der Datenverkehr wird über die verschlüsselte SSH-Verbindung gesendet, sodass er während der Übertragung nicht überwacht oder geändert werden kann.

    Das können Sie mit der ssh Befehl unter Linux, macOS und anderen UNIX-ähnlichen Betriebssystemen enthalten. Unter Windows, das keinen integrierten ssh-Befehl enthält, empfehlen wir das kostenlose Tool PuTTY, um eine Verbindung zu SSH-Servern herzustellen. Es unterstützt auch SSH-Tunneling.

    Lokale Portweiterleitung: Machen Sie Remote-Ressourcen auf Ihrem lokalen System verfügbar

    Mit "Local Port Forwarding" können Sie auf lokale Netzwerkressourcen zugreifen, die nicht mit dem Internet verbunden sind. Angenommen, Sie möchten von zu Hause aus auf einen Datenbankserver in Ihrem Büro zugreifen. Aus Sicherheitsgründen ist dieser Datenbankserver nur so konfiguriert, dass er Verbindungen vom lokalen Büronetzwerk akzeptiert. Wenn Sie jedoch Zugriff auf einen SSH-Server im Büro haben und dieser SSH-Server Verbindungen von außerhalb des Büronetzwerks zulässt, können Sie sich von zu Hause aus mit diesem SSH-Server verbinden und auf den Datenbankserver zugreifen, als ob Sie im Büro wären. Dies ist häufig der Fall, da es einfacher ist, einen einzelnen SSH-Server vor Angriffen zu schützen, als verschiedene Netzwerkressourcen zu sichern.

    Dazu bauen Sie eine SSH-Verbindung zum SSH-Server auf und weisen den Client an, den Datenverkehr von einem bestimmten Port von Ihrem lokalen PC (z. B. Port 1234) an die Adresse des Datenbankservers und dessen Port im Büronetzwerk weiterzuleiten. Wenn Sie also versuchen, auf den Datenbankserver an Port 1234 Ihres aktuellen PCs, „localhost“, zuzugreifen, wird dieser Verkehr automatisch über die SSH-Verbindung „getunnelt“ und an den Datenbankserver gesendet. Der SSH-Server befindet sich in der Mitte und leitet den Verkehr hin und her. Sie können eine beliebige Befehlszeile oder ein grafisches Tool verwenden, um auf den Datenbankserver zuzugreifen, als ob er auf Ihrem lokalen PC ausgeführt würde.

    Um die lokale Weiterleitung zu verwenden, stellen Sie eine normale Verbindung zum SSH-Server her, geben Sie aber auch den -L Streit. Die Syntax lautet:

    ssh -L local_port: remote_address: remote_port [email protected]

    Angenommen, der Datenbankserver in Ihrem Büro befindet sich in dem Büronetzwerk unter 192.168.1.111. Sie haben Zugriff auf den SSH-Server des Büros unter ssh.youroffice.com , und Ihr Benutzerkonto auf dem SSH-Server ist Bob . In diesem Fall würde Ihr Befehl so aussehen:

    ssh -L 8888: 192.168.1.111: 1234 [email protected]

    Nachdem Sie diesen Befehl ausgeführt haben, können Sie auf den Datenbankserver an Port 8888 unter localhost zugreifen. Wenn der Datenbankserver einen Webzugriff anbietet, können Sie http: // localhost: 8888 in Ihren Webbrowser stecken, um darauf zuzugreifen. Wenn Sie ein Befehlszeilentool hätten, das die Netzwerkadresse einer Datenbank benötigt, verweisen Sie auf localhost: 8888. Der an Port 8888 auf Ihrem PC gesendete Datenverkehr wird in Ihrem Büronetzwerk auf 192.168.1.111:1234 getunnelt.

    Es ist etwas verwirrender, wenn Sie eine Verbindung zu einer Serveranwendung herstellen möchten, die auf demselben System wie der SSH-Server ausgeführt wird. Angenommen, Sie haben einen SSH-Server, der an Port 22 Ihres Bürocomputers ausgeführt wird, aber Sie haben auch einen Datenbankserver, der an Port 1234 auf demselben System unter derselben Adresse ausgeführt wird. Sie möchten auf den Datenbankserver von zu Hause aus zugreifen, das System akzeptiert jedoch nur SSH-Verbindungen an Port 22, und die Firewall lässt keine weiteren externen Verbindungen zu.

    In diesem Fall können Sie einen Befehl wie den folgenden ausführen:

    ssh -L 8888: localhost: 1234 [email protected]

    Wenn Sie versuchen, auf den Datenbankserver an Port 8888 auf Ihrem aktuellen PC zuzugreifen, wird der Datenverkehr über die SSH-Verbindung gesendet. Wenn der SSH-Server auf dem System ankommt, auf dem der SSH-Server ausgeführt wird, sendet er ihn an Port 1234 auf „localhost“. Dies ist derselbe PC, auf dem der SSH-Server selbst ausgeführt wird. Das "localhost" im obigen Befehl bedeutet also "localhost" aus Sicht des Remote-Servers.

    Wählen Sie dazu in der PuTTY-Anwendung unter Windows Verbindung> SSH> Tunnel aus. Wählen Sie die Option "Local". Geben Sie für „Source Port“ den lokalen Port ein. Geben Sie für "Ziel" die Zieladresse und den Port in der Form "Remote_Adresse: Remote_Port" ein.

    Wenn Sie beispielsweise denselben SSH-Tunnel wie oben einrichten möchten, müssen Sie eingeben 8888 als Quellport und localhost: 1234 als das Ziel. Klicken Sie anschließend auf "Hinzufügen" und dann auf "Öffnen", um die SSH-Verbindung zu öffnen. Natürlich müssen Sie vor dem Verbindungsaufbau auch die Adresse und den Port des SSH-Servers auf dem Hauptbildschirm „Session“ eingeben.

    Remote-Portweiterleitung: Lokale Ressourcen auf einem Remote-System verfügbar machen

    "Remote Port Forwarding" ist das Gegenteil von Local Forwarding und wird nicht so häufig verwendet. Damit können Sie eine Ressource auf Ihrem lokalen PC auf dem SSH-Server verfügbar machen. Angenommen, Sie betreiben einen Webserver auf dem lokalen PC, vor dem Sie sitzen. Ihr PC befindet sich jedoch hinter einer Firewall, die keinen eingehenden Verkehr zur Serversoftware zulässt.

    Vorausgesetzt, Sie können auf einen Remote-SSH-Server zugreifen, können Sie eine Verbindung zu diesem SSH-Server herstellen und die Remote-Port-Weiterleitung verwenden. Ihr SSH-Client weist den Server an, einen bestimmten Port, z. B. Port 1234, auf dem SSH-Server an eine bestimmte Adresse und einen Port an Ihrem aktuellen PC oder lokalen Netzwerk weiterzuleiten. Wenn jemand auf den Port 1234 des SSH-Servers zugreift, wird dieser Verkehr automatisch über die SSH-Verbindung „getunnelt“. Jeder, der Zugriff auf den SSH-Server hat, kann auf den Webserver Ihres PCs zugreifen. Dies ist effektiv eine Möglichkeit, durch Firewalls zu tunneln.

    Verwenden Sie zur Verwendung der Remote-Weiterleitung ssh Befehl mit der -R Streit. Die Syntax ist weitgehend identisch mit der lokalen Weiterleitung:

    ssh -R remote_port: local_address: local_port [email protected]

    Angenommen, Sie möchten, dass eine Serveranwendung, die an Port 1234 auf Ihrem lokalen PC abgehört wird, an Port 8888 auf dem Remote-SSH-Server verfügbar ist. Die Adresse des SSH-Servers lautet ssh.youroffice.com und Ihr Benutzername auf dem SSH-Server lautet Bob. Sie würden den folgenden Befehl ausführen:

    ssh -R 8888: localhost: 1234 [email protected]

    Jemand könnte dann an Port 8888 eine Verbindung zum SSH-Server herstellen, und diese Verbindung wird zu der Serveranwendung getunnelt, die an Port 1234 des lokalen PCs ausgeführt wird, von dem aus Sie die Verbindung hergestellt haben.

    Wählen Sie dazu in PuTTY unter Windows Verbindung> SSH> Tunnel. Wählen Sie die Option "Remote". Geben Sie für „Source Port“ den Remote-Port ein. Geben Sie für "Ziel" die Zieladresse und den Port in der Form local_address: local_port ein.

    Wenn Sie beispielsweise das obige Beispiel einrichten möchten, geben Sie ein 8888 als Quellport und localhost: 1234 als das Ziel. Klicken Sie anschließend auf "Hinzufügen" und dann auf "Öffnen", um die SSH-Verbindung zu öffnen. Natürlich müssen Sie vor dem Verbindungsaufbau auch die Adresse und den Port des SSH-Servers auf dem Hauptbildschirm „Session“ eingeben.

    Die Benutzer könnten dann eine Verbindung zu Port 8888 auf dem SSH-Server herstellen, und der Datenverkehr würde auf Port 1234 auf Ihrem lokalen System getunnelt.

    Standardmäßig überwacht der Remote-SSH-Server nur Verbindungen von demselben Host. Mit anderen Worten, nur Personen, die sich auf demselben System wie der SSH-Server befinden, können eine Verbindung herstellen. Dies ist aus Sicherheitsgründen. Sie müssen die Option „GatewayPorts“ in sshd_config auf dem Remote-SSH-Server aktivieren, wenn Sie dieses Verhalten überschreiben möchten.

    Dynamische Portweiterleitung: Verwenden Sie Ihren SSH-Server als Proxy

    Es gibt auch "dynamisches Port-Forwarding", das ähnlich einem Proxy oder VPN funktioniert. Der SSH-Client erstellt einen SOCKS-Proxy, für den Sie Anwendungen konfigurieren können. Der gesamte über den Proxy gesendete Datenverkehr würde über den SSH-Server gesendet. Dies ist vergleichbar mit der lokalen Weiterleitung. Dabei wird lokaler Datenverkehr an einen bestimmten Port Ihres PCs gesendet und über die SSH-Verbindung an einen Remote-Standort gesendet.

    Angenommen, Sie verwenden ein öffentliches Wi-Fi-Netzwerk. Sie möchten sicher surfen, ohne weiter beschnuppert zu werden. Wenn Sie zu Hause Zugriff auf einen SSH-Server haben, können Sie eine Verbindung herstellen und dynamische Portweiterleitung verwenden. Der SSH-Client erstellt auf Ihrem PC einen SOCKS-Proxy. Der gesamte an diesen Proxy gesendete Datenverkehr wird über die SSH-Serververbindung gesendet. Niemand, der das öffentliche Wi-Fi-Netzwerk überwacht, kann Ihr Surfen überwachen oder die Websites, auf die Sie zugreifen können, zensieren. Aus der Perspektive von Websites, die Sie besuchen, ist es, als würden Sie zu Hause vor Ihrem PC sitzen. Dies bedeutet auch, dass Sie diesen Trick verwenden können, um ausschließlich auf US-amerikanische Websites zuzugreifen, wenn Sie sich außerhalb der USA befinden, vorausgesetzt, Sie haben natürlich Zugriff auf einen SSH-Server in den USA.

    Als ein anderes Beispiel möchten Sie möglicherweise auf eine Medienserveranwendung zugreifen, die Sie in Ihrem Heimnetzwerk verwenden. Aus Sicherheitsgründen darf nur ein SSH-Server mit dem Internet verbunden sein. Sie erlauben keine eingehenden Verbindungen aus dem Internet zu Ihrer Medienserveranwendung. Sie können eine dynamische Portweiterleitung einrichten, einen Webbrowser für die Verwendung des SOCKS-Proxys konfigurieren und dann über den Webbrowser auf Server in Ihrem Heimnetzwerk zugreifen, als würden Sie zu Hause vor Ihrem SSH-System sitzen. Befindet sich Ihr Medienserver beispielsweise in Ihrem Heimnetzwerk an Port 192.168.1.123, können Sie die Adresse einstecken 192.168.1.123 in eine Anwendung, die den SOCKS-Proxy verwendet, und Sie würden so auf den Medienserver zugreifen, als wären Sie in Ihrem Heimnetzwerk.

    Um die dynamische Weiterleitung zu verwenden, führen Sie den Befehl ssh mit der Taste -D Argument wie folgt:

    ssh -D local_port [email protected]

    Angenommen, Sie haben Zugriff auf einen SSH-Server unter ssh.yourhome.com und Ihr Benutzername auf dem SSH-Server lautet Bob . Sie möchten die dynamische Weiterleitung verwenden, um einen SOCKS-Proxy an Port 8888 auf dem aktuellen PC zu öffnen. Sie würden den folgenden Befehl ausführen:

    ssh -D 8888 [email protected]

    Sie können dann einen Webbrowser oder eine andere Anwendung so konfigurieren, dass Ihre lokale IP-Adresse (127.0.01) und der Port 8888 verwendet werden. Der gesamte Datenverkehr von dieser Anwendung wird durch den Tunnel umgeleitet.

    Wählen Sie dazu in PuTTY unter Windows Verbindung> SSH> Tunnel. Wählen Sie die Option "Dynamisch". Geben Sie für „Source Port“ den lokalen Port ein.

    Wenn Sie beispielsweise einen SOCKS-Proxy an Port 8888 erstellen möchten, müssen Sie Folgendes eingeben 8888 als Quellport. Klicken Sie anschließend auf "Hinzufügen" und dann auf "Öffnen", um die SSH-Verbindung zu öffnen. Natürlich müssen Sie vor dem Verbindungsaufbau auch die Adresse und den Port des SSH-Servers auf dem Hauptbildschirm „Session“ eingeben.

    Sie können dann eine Anwendung für den Zugriff auf den SOCKS-Proxy auf Ihrem lokalen PC (dh die IP-Adresse 127.0.0.1, die auf Ihren lokalen PC verweist) konfigurieren und den richtigen Port angeben.

    Sie können Firefox beispielsweise so konfigurieren, dass der SOCKS-Proxy verwendet wird. Dies ist besonders nützlich, weil Firefox eigene Proxy-Einstellungen haben kann und keine systemweiten Proxy-Einstellungen verwenden muss. Firefox sendet seinen Datenverkehr durch den SSH-Tunnel, während andere Anwendungen Ihre Internetverbindung normal nutzen.

    Wählen Sie dazu in Firefox "Manuelle Proxy-Konfiguration", geben Sie "127.0.0.1" in das Feld "SOCKS-Host" ein und geben Sie den dynamischen Port in das Feld "Port" ein. Lassen Sie die Felder HTTP-Proxy, SSL-Proxy und FTP-Proxy leer.

    Der Tunnel bleibt so lange aktiv und geöffnet, wie Sie die SSH-Sitzungsverbindung geöffnet haben. Wenn Sie Ihre SSH-Sitzung beenden und die Verbindung zu einem Server trennen, wird der Tunnel ebenfalls geschlossen. Verbinden Sie sich einfach mit dem entsprechenden Befehl (oder den entsprechenden Optionen in PuTTY), um den Tunnel wieder zu öffnen.