Warum kann ich keine Remote-Verbindung zu einem Reverse-SSH-Tunnelport herstellen, auch wenn GatewayPorts aktiviert ist?

20

Ich benötige ständigen SSH-Zugriff auf einen Host in unserer Abteilung, dessen IP-Adresse dynamisch zugewiesen wird. Ich habe einen Remote-SSH-Tunnel vom Zielhost zu einem unserer Hosts eingerichtet, der eine statische IP-Adresse besitzt:

ssh -f -N -g -R :22223:localhost:22 tunnelhost

Wenn ich SSH auf den lokalen Port 22223des Tunnelhosts zeige, funktioniert der Tunnel einwandfrei. Mein Problem ist, dass ich den Tunnel anscheinend nicht an etwas anderes als localhost binden kann - dh wenn ich versuche, aus der Ferne zu SSH zu gelangen tunnelhost:12323, gibt es keinen offenen Port, um ihn zu empfangen. Ich habe auch versucht:

ssh -f -N -R :22223:localhost:22 tunnelhost -o GatewayPorts=yes

Aber immer noch kein Glück. Netstat zeigt mir:

[me@tunnel_host ~]$ netstat -an | grep 22223
tcp        0      0 127.0.0.1:22223         0.0.0.0:*               LISTEN
tcp6       0      0 ::1:22223               :::*                    LISTEN

Bestätigung, dass der Tunnel nur an localhost gebunden ist. Ich habe eine Portausnahme auf dem Tunnelhost mit firewalld-cmd hinzugefügt und sichergestellt, dass keine Netzwerkhardware die Verbindung stört. Irgendwelche Ideen, was es sein könnte?

Prost, James.

James Paul Turner
quelle

Antworten:

29

Sie müssen GatewayPorts=yesin der Konfiguration SSHd ( /etc/ssh/sshd_config) und nicht den Client aktivieren, um die Bindung an andere Schnittstellen als Loopback an Remote-Ports zu aktivieren.

-o GatewayPorts=yes

Funktioniert nur für lokale Ports, wenn sie an den sshBefehl übergeben werden.

Darth Android
quelle
Darth Android, vielen Dank für Ihre Antwort. Anscheinend haben Sie Recht mit -g und -o GatewayPorts, die nur für (-L) ocale Tunnel funktionieren. Der Vollständigkeit halber hier ein wenig mehr Informationen zu diesem Thema, falls jemand anderes in Zukunft darauf stößt. bugs.debian.org/cgi-bin/bugreport.cgi?bug=228064
James Paul Turner
3
GatewayPorts=clientspecifiedEine etwas sicherere Einstellung finden Sie unter askubuntu.com/questions/50064/reverse-port-tunnelling . In diesem Fall ist die leere Bindeadresse (abschließender Doppelpunkt :22223:localhost:2) erforderlich.
Michael Goerz
1
Ich würde argumentieren, dass die GatewayPorts=clientspecifiedEinstellung selbst nicht sicherer ist, sondern eine bessere Kontrolle darüber ermöglicht, welche Verbindungen an Platzhalter gebunden werden, anstatt nur alle an Platzhalter gebunden zu haben.
Nick
Starten Sie sshd auch neu, nachdem Sie sshd_config geändert haben (falls Sie es vergessen sollten)
Nick
⚠️ Beachten Sie, dass GatewayPorts=yesdie weitergeleiteten Ports für die Welt geöffnet werden.
ccpizza