2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Port Mapping, auch Port Forwarding genannt, ist eine Technologie, die den Datenfluss von einem Netzwerk-Port zu einem anderen Netzwerk-Port umleitet. Dies wird normalerweise für Dienste verwendet, die hinter einer Firewall oder einem Router ausgeführt werden, sodass externe Geräte auf bestimmte Dienste im internen Netzwerk zugreifen können. Die Portzuordnung kann innerhalb des lokalen Netzwerks oder netzwerkübergreifend mithilfe von Protokollen wie SSH erfolgen.
Lokale Portweiterleitung:
8080
Dem Remote-Server zugeordnet80
Port, damit er lokal übergeben werden kannlocalhost:8080
Greifen Sie auf den Webdienst des Remote-Servers zu.Remote-Port-Weiterleitung:
2222
Portzuordnung zum lokalen Computer22
Port, damit über den Remote-Server auf den SSH-Dienst des lokalen Computers zugegriffen werden kann.Dynamische Portweiterleitung:
Fernzugriff auf interne Dienste: Durch Port-Mapping kann vom externen Netzwerk aus auf bestimmte Dienste innerhalb des Firmen- oder Heimnetzwerks zugegriffen werden, wie z. B. Webserver, Datenbankserver usw.
Firewall durchdringen: Durch Port-Mapping können Sie Firewall-Einschränkungen umgehen und auf von der Firewall blockierte Dienste zugreifen.
Verbessern Sie die Sicherheit: Port-Mapping über SSH-Tunnel kann die Datenübertragung verschlüsseln und die Sicherheit verbessern.
Lastausgleich und Proxys: Load Balancer und Proxyserver nutzen häufig Port-Mapping-Technologie, um den Datenverkehr zu verteilen und weiterzuleiten und so die Zuverlässigkeit und Leistung der Dienste zu verbessern.
Angenommen, auf einem Remote-Server läuft ein Webdienst und der Port, auf dem er lauscht, ist80
. Um von Ihrem lokalen Computer aus auf diesen Dienst zuzugreifen, erstellen Sie eine lokale Portzuordnung mit dem folgenden SSH-Befehl:
ssh -L 8080:localhost:80 user@remote-server
Dieser Befehl ändert die des lokalen Computers8080
Portzuordnung zum Remote-Server80
Hafen.Greifen Sie jetzt in Ihrem lokalen Browser darauf zuhttp://localhost:8080
, was dem Zugriff auf den Webdienst des Remote-Servers entspricht.
Es gibt mehrere Hauptgründe für die Portzuordnung (oder Portweiterleitung) während der Entwicklung:
Zugriff auf geschützte Dienste: Einige Dienste auf dem Entwicklungscomputer lauschen möglicherweise nur auf localhost (127.0.0.1
) und nicht direkt von außen zugänglich. Durch Port-Mapping können diese Dienste offengelegt und von außen zugänglich gemacht werden.
Sicherheit : Die Portweiterleitung über einen SSH-Tunnel ermöglicht den sicheren Zugriff auf interne Dienste, ohne den Dienst direkt offenzulegen. Der SSH-Tunnel verschlüsselt die Datenübertragung für zusätzliche Sicherheit.
Einfach zu debuggen : Während des Entwicklungsprozesses müssen Entwickler möglicherweise auf mehrere Dienste zugreifen, die auf dem Entwicklungscomputer ausgeführt werden. Mit Port-Mapping kann direkt von lokal auf diese Dienste zugegriffen werden, ohne sich jedes Mal am Entwicklungscomputer anmelden zu müssen.
Umgehen Sie Firewall- oder Netzwerkbeschränkungen : In einigen Netzwerkumgebungen kann es Firewalls oder Netzwerkeinschränkungen geben, die den direkten Zugriff auf Dienste auf dem Entwicklungscomputer verhindern. Durch SSH-Tunneling können diese Einschränkungen umgangen und der Zugriff auf Dienste ermöglicht werden.
Zugriff für mehrere Benutzer: Wenn mehrere Entwickler auf denselben Dienst zugreifen müssen, ermöglicht die Portzuordnung jedem Entwickler den Zugriff auf den Dienst in seiner eigenen lokalen Umgebung, ohne sich direkt am Entwicklungscomputer anzumelden.
Zum Beispiel:
Angenommen, auf Ihrem Entwicklungscomputer läuft ein Jupyter-Notebook-Server, der Port 7860 überwacht, aber nur lokalen Zugriff zulässt. Mit dem folgenden SSH-Befehl können Sie den 7860-Port der Entwicklungsmaschine Ihrem lokalen 7860-Port zuordnen:
ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
Auf diese Weise können Sie in Ihrem lokalen Browser darauf zugreifen http://127.0.0.1:7860
um den Jupyter Notebook-Server auf Ihrem Entwicklungscomputer anzuzeigen und zu verwenden.
Die Entwicklungsmaschine verfügt über eine eigenefreiliegender HafenUndÖffentliche IP, kann für unsere lokale SSH-Verbindung verwendet werden
Sondern in der Entwicklungsmaschine, also dem ServerProgramm ausführenWenn das Programm auf dem Server liegtauf einem bestimmten PortIm Gange
Wenn wir also sehen möchten, wie das Programm lokal auf dem Server ausgeführt wird, müssen wir es erstellenPort-MappingWenn der Browser den lokalen Port öffnet, leiten Sie ihn zur Anzeige an den Port des Servers weiter.
ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
Zum Beispiel:
ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
Mit diesem Befehl wird ein SSH-Tunnel erstellt. Nachfolgend finden Sie eine detaillierte Erklärung jedes Teils:
ssh
: Befehl zum Initiieren einer SSH-Verbindung.-p 37367
: Geben Sie die Portnummer des Remote-Hosts an, zu dem eine Verbindung hergestellt werden soll (in diesem Beispiel Port 37367).[email protected]
: Benutzername (root) und Hostname (ssh.intern-ai.org.cn).-CNg
: Kombination der Optionen: -C
: Komprimierung aktivieren.-N
: Weisen Sie SSH an, keine Remote-Befehle auszuführen, sondern nur die Portweiterleitung.-g
: Remote-Hosts erlauben, sich mit dem weitergeleiteten Port zu verbinden.-L 7860:127.0.0.1:7860
: Führen Sie eine lokale Portweiterleitung durch und ordnen Sie Port 7860 des lokalen Computers dem Port 7860 von 127.0.0.1 des Remote-Hosts zu.-o StrictHostKeyChecking=no
: Deaktivieren Sie die Überprüfung des Hostschlüssels, wodurch interaktive Eingabeaufforderungen beim ersten Herstellen einer Verbindung verhindert werden.Zusammenfassend lässt sich sagen, dass dieser Befehl einen SSH-Tunnel zwischen dem lokalen Computer und dem Remote-Host erstellt, den lokalen Port 7860 an den Port 7860 des Remote-Hosts weiterleitet und keine Remote-Befehle ausführt oder den Host-Schlüssel überprüft.
Wie nachfolgend dargestellt:
Nach der Portzuordnung wird das Programm angezeigt, das auf dem Port 7860 des Servers läuft.