SSH Reverse Port Forwarding mit PuTTy - wie Bindungsadresse angegeben wird

15

Mit Putty habe ich einen Reverse-Proxy eingerichtet, der es mir ermöglicht, auf Port 8080 des Servers eine Verbindung server.tldzu Port 80 des Computers herzustellen, der die SSH-Verbindung initiiert hat.

Der Server ermöglicht es mir, eine Verbindung herzustellen, localhost:8080und gibt das Ergebnis aus, initiator:80wenn ich eine Verbindung mit dem Server herstelle.

Diese Frage besagt, dass GatewayPorts aktiviert und an alle Adressen gebunden werden soll.

Wie kann ich mithilfe von Putty den Port 8080 auf dem Server freigeben, sodass der Port bei Eingang einer Anforderung über die externe Schnittstelle (z. B. eine Webanforderung) an die weitergeleitet wird initiator:80?

Bildbeschreibung hier eingeben

Darbio
quelle
Können Sie genau beschreiben, was Sie in den PuTTY-Dialog einfügen, um den Tunnel zu erstellen?
EightBitTony
Screenshot hinzugefügt - Ports unterscheiden sich vom Beispieltext, ermöglichen jedoch nicht die Weiterleitung einer Anforderung an die externe Schnittstelle durch den Tunnel (z. B. 1.2.3.4:8080). Interne Anfragen werden weitergeleitet (localhost: 8080).
Darbio
Was bedeutet netstat -an | grep 8080 zeigen? Und wenn du nicht erlaubst, was meinst du? Haben Sie eine Firewall, die Verbindungen zu Port 8080 blockiert?
EightBitTony

Antworten:

16

Beim Einrichten des PuTTY-Tunnels gibt es zwei Kontrollkästchen.

  • Lokale Ports akzeptieren Verbindungen von anderen Hosts
  • Remote-Ports machen dasselbe (nur SSH-2)

der zweite von ihnen tut, was Sie brauchen.

Ich habe es gerade getestet,

PuTTY Tunnel Dialog,

  • Kreuzen Sie Remote-Ports an ...
  • Stecken Sie den 8080 in den Source-Port
  • Fügen Sie 127.0.0.1:80 in den Zielport ein
  • Wählen Sie das Optionsfeld 'Remote'
  • Klicken Sie auf Hinzufügen
  • Verbinden

Funktioniert gut, hier ist das resultierende netstat,

# netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

Sie können auch die mit PuTTY gelieferte Datei plink.exe verwenden, z.

plink -R *:8080:localhost:80 [email protected]

was auch gut funktioniert.

# netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

Wenn Sie immer noch 127.0.0.1:8080 auf dem Host haben, ist GatewayPorts in Ihrer sshd-Konfiguration immer noch auf no gesetzt.

Vergessen Sie auch nicht, die Firewall auf dem Zielserver zu aktualisieren, um externe Verbindungen zu Port 8080 zuzulassen.

EightBitTony
quelle
Nein - es scheint mir nicht das gleiche Verhalten zu geben, wie es sein ssh -R *:8080:localhost:80sollte?
Darbio
GatewayPorts ist auf yes gesetzt. Es funktioniert mit dem ssh -R \*:8080:localhost:80Befehl, konnte es aber nicht in PuTTy
Darbio,
@Darbio hast du es jemals mit Kitt herausgefunden?
Barlop
Ich verwende häufig die Portweiterleitung, normalerweise auf lokaler2Remote-Art (VNC, Proxy usw.), und diesmal funktionierte der remote2local-Port nicht, egal welche Option ich aktiviert habe, der Port wird auf der Fernbedienung nicht als offen angezeigt. Die plinkdirekte Verwendung funktionierte problemlos mit denselben Befehlen wie reguläres ssh. Ich konnte nicht verstehen,
warum