So erstellen Sie SSH-Tunneling oder Portweiterleitung unter Linux
Sie können auch verwendet werden, um lokale Server hinter NATs und Firewalls über sichere Tunnel, wie in ngrok implementiert, dem Internet zugänglich zu machen.
SSH Sitzungen ermöglichen standardmäßig das Tunneln von Netzwerkverbindungen, und es gibt drei Arten der SSH-Portweiterleitung: lokal, Fernbedienung und dynamisch Port-Weiterleitung.
In diesem Artikel wird gezeigt, wie Sie schnell und einfach ein SSH-Tunneling oder die verschiedenen Arten der Portweiterleitung unter Linux einrichten.
Testumgebung:
Für den Zweck dieses Artikels verwenden wir das folgende Setup:
- Lokaler Host: 192.168.43.31
- Remote-Host:: Linode CentOS 7 VPS mit Hostname server1.example.com.
Normalerweise können Sie mit SSH wie folgt eine sichere Verbindung zu einem Remote-Server herstellen. In diesem Beispiel habe ich die kennwortlose SSH-Anmeldung zwischen meinem lokalen und dem Remote-Host konfiguriert, sodass nicht nach dem Kennwort des Benutzeradministrators gefragt wurde.
$ ssh [email protected]
Lokale SSH-Portweiterleitung
Mit dieser Art der Portweiterleitung können Sie eine Verbindung von Ihrem lokalen Computer zu einem Remote-Server herstellen. Angenommen, Sie befinden sich hinter einer restriktiven Firewall oder werden von einer ausgehenden Firewall daran gehindert, auf eine am Port ausgeführte Anwendung zuzugreifen 3000 auf Ihrem Remote-Server.
Sie können einen lokalen Port weiterleiten (z 8080), mit denen Sie dann wie folgt lokal auf die Anwendung zugreifen können. Das -L
Das Flag definiert den an den Remote-Host und den Remote-Port weitergeleiteten Port.
$ ssh [email protected] -L 8080: server1.example.com:3000
Hinzufügen der -N
Flag bedeutet, dass Sie keinen Remote-Befehl ausführen. In diesem Fall erhalten Sie keine Shell.
$ ssh -N [email protected] -L 8080: server1.example.com:3000
Das -f
switch weist ssh an, im Hintergrund zu laufen.
$ ssh -f -N [email protected] -L 8080: server1.example.com:3000
Öffnen Sie jetzt auf Ihrem lokalen Computer einen Browser, anstatt über die Adresse auf die Remote-Anwendung zuzugreifen server1.example.com:3000können Sie einfach verwenden localhost:8080
oder 192.168.43.31:8080
, wie im folgenden Screenshot gezeigt.
Remote-SSH-Portweiterleitung
Mit der Remote-Port-Weiterleitung können Sie eine Verbindung von Ihrem Remote-Computer zum lokalen Computer herstellen. Standardmäßig erlaubt SSH keine Remote-Port-Weiterleitung. Sie können dies mit dem aktivieren GatewayPorts Direktive in Ihrer SSHD-Hauptkonfigurationsdatei / etc / ssh / sshd_config auf dem Remote-Host.
Öffnen Sie die Datei zur Bearbeitung mit Ihrem bevorzugten Befehlszeileneditor.
$ sudo vim /etc/ssh/sshd_config
Suchen Sie nach der erforderlichen Direktive, kommentieren Sie sie aus und setzen Sie ihren Wert auf yes
, wie im Screenshot gezeigt.
GatewayPorts yes
Speichern Sie die Änderungen und beenden Sie sie. Als Nächstes müssen Sie sshd neu starten, um die zuletzt vorgenommenen Änderungen zu übernehmen.
$ sudo systemctl restart sshd OR $ sudo service sshd restart
Führen Sie als Nächstes den folgenden Befehl aus, um den Port weiterzuleiten 5000 auf dem Remote-Computer zu portieren 3000 auf dem lokalen Computer.
$ ssh -f -N [email protected] -R 5000:localhost:3000
Sobald Sie diese Tunnelmethode verstanden haben, können Sie einen lokalen Entwicklungsserver, insbesondere hinter NATs und Firewalls, einfach und sicher über sichere Tunnel für das Internet verfügbar machen. Tunnel wie Ngrok, Pagekite, localtunnel und viele andere arbeiten auf ähnliche Weise.
Dynamische SSH-Portweiterleitung
Dies ist die dritte Art der Portweiterleitung. nicht wie lokal und Fernbedienung Portweiterleitung, die die Kommunikation mit einem einzelnen Port ermöglicht, ermöglicht eine vollständige Palette von TCP-Kommunikationen über eine Reihe von Ports. Die dynamische Portweiterleitung richtet Ihren Computer als ein SOCKS-Proxyserver die auf Port hört 1080, standardmäßig.
Für Starter, Socken ist ein Internetprotokoll, das definiert, wie ein Client über einen Proxyserver (in diesem Fall SSH) eine Verbindung zu einem Server herstellen kann. Sie können die dynamische Portweiterleitung mit aktivieren -D Möglichkeit.
Der folgende Befehl startet einen SOCKS-Proxy am Port 1080 So können Sie eine Verbindung zum Remote-Host herstellen.
$ ssh -f -N -D 1080 [email protected]
Von nun an können Sie Anwendungen auf Ihrem Computer dazu bringen, diesen SSH-Proxyserver zu verwenden, indem Sie ihre Einstellungen bearbeiten und für die Verwendung konfigurieren, um eine Verbindung zu Ihrem Remote-Server herzustellen. Notiere dass der Socken Der Proxy funktioniert nicht mehr, nachdem Sie Ihre SSH-Sitzung geschlossen haben.
Lesen Sie auch: 5 Möglichkeiten, um Remote-SSH-Sitzungen nach dem Schließen von SSH am Laufen zu halten
Zusammenfassung
In diesem Artikel haben wir die verschiedenen Arten der Portweiterleitung von einem Computer zu einem anderen erläutert, um den Datenverkehr über die sichere SSH-Verbindung zu tunneln. Dies ist eine der sehr vielen Anwendungen von SSH. Sie können Ihre Stimme zu diesem Handbuch über das unten stehende Feedback-Formular hinzufügen.
Beachtung: Die Weiterleitung von SSH-Ports hat einige erhebliche Nachteile. Sie kann missbraucht werden: Sie kann zur Umgehung von Netzwerküberwachungs- und Verkehrsfilterprogrammen (oder Firewalls) verwendet werden. Angreifer können es für böswillige Aktivitäten verwenden. In unserem nächsten Artikel zeigen wir, wie Sie die lokale SSH-Portweiterleitung deaktivieren. In Verbindung bleiben!