Betrachten Sie die folgende Situation:
Zu Hause habe ich einen Router (der mit dem Internet verbunden ist), einen Server (S) und mein Hauptgerät (M). S ist über das Internet erreichbar (es hat eine statische IP-Adresse) und ist rund um die Uhr erreichbar, während M dies nicht ist.
Manchmal möchte ich eine App (die an einem Port auf M lauscht, z. B. 8888) über das äußere Internet zugänglich machen.
Dafür wollte ich einen Port auf S (2222) einrichten, um zu Ms Port 8888 weiterzuleiten, damit jeder, der auf S: 2222 zugreift, das Gefühl hat, auf M: 8888 zuzugreifen.
Ich habe versucht, die SSH-Portweiterleitung zu verwenden. Mein bester Versuch war:
ssh -L 2222:M:8888 -N M
Damit kann ich jedoch nur vom Server selbst auf den 2222-Port zugreifen, nicht von anderen Computern.
Gibt es eine Möglichkeit, es richtig zu machen? Am liebsten wäre es ein einfacher Befehl, den ich mit ^ C starten und beenden könnte, wenn ich diese Weiterleitung nicht mehr benötige.
quelle
Antworten:
Ja, dies wird
GatewayPorts
in SSH aufgerufen . Ein Auszug ausssh_config(5)
:Und Sie können
localhost
anstelle vonM
in der Weiterleitung verwenden, wie Sie auf den gleichen Computer weiterleiten, zu dem Sie SSH-ing ausführen - wenn ich Ihre Frage richtig verstehe.Der Befehl lautet also:
und wird so aussehen in
netstat -nltp
:Jetzt spricht jeder, der über Port 2222 TCP auf diesen Computer zugreift, tatsächlich mit localhost: 8888, wie in Computer M zu sehen.
quelle
netstat
Befehl, um herauszufinden, was genau ist. Wahrscheinlich läuft noch eine ähnliche SSH im Hintergrund und tötet sie mit Hilfe der PID netstat.Es geht auch anders. Sie können die Portweiterleitung von S: 2222 nach W: 8888 mit iptables einrichten. Einzelbefehl:
wobei 1.2.3.4 die IP-Adresse von M ist. Es heißt NAT (Network Address Translation).
quelle
Weitere Alternativen:
netcat
(traditionell) odersocat
Auf dem Server (S):
oder
Details siehe in: Einfacher Weg, einen Tunnel von einem lokalen Port zu einem anderen zu erstellen?
quelle