Frage: Warum führt ssh -N -R 2222:localhost:22 <bluehost_user>@<bluehost_ip>
zum Fehler "Remote-Portweiterleitung für Listen-Port fehlgeschlagen"? Ziel ist es, einen Reverse-Tunnel mit Port-Forwarding einzurichten, um konsistent in einen Host hinter einem NAT -Router mit einer dynamischen privaten IP-Adresse zu sshen. Siehe Bild für Details.
Bereits ausprobiert:
Reverse-SSH-Tunnel
Update
Ich habe den folgenden Befehl für Schritt 2 ausprobiert: [email protected]:~ ssh [email protected] -p 2222
Es sollte sein: [email protected]:~ ssh [email protected] -p 2222
Sie möchten die greenuser-Anmeldeinformationen auf der bluehost-IP verwenden, da der Host, bei dem Sie sich anmelden, wenn Sie Port 2222 verwenden, wirklich der greenhost ist.
Warum führt
ssh -N -R 2222:localhost:22 <bluehost_user>@<bluehost_ip>
zum Fehler "Remote-Port-Weiterleitung für Listen-Port fehlgeschlagen"?
Ich erhalte genau diese Warnung, wenn ich versuche, einen Port zu verwenden, der bereits auf der Remote-Seite belegt ist.
Die Ausgabe von netstat
von bluehost
zeigt an, dass dort bereits etwas auf Port 2222
lauscht. Es zeigt jedoch nicht, was es ist.
Lösungen:
2222
in Ihrem Aufruf von ssh
in einen anderen Port, der für bluehost
nicht verwendet wird. Machen Sie es einfach größer als 1023
, da normale Benutzer keine Bindung zu bekannten Ports herstellen können. Andernfalls erhalten Sie die gleiche Warnung, unabhängig davon, ob der Port verwendet wird oder nicht.bluehost
) mit Sudo lsof -i TCP:2222
; Beenden oder konfigurieren Sie es neu, um den Port 2222
verfügbar zu machen.Bearbeiten:
In Ihrem Fall scheint dieser Teil von man ssh
wichtig zu sein:
-R [bind_address:]port:Host:hostport -R [bind_address:]port:local_socket -R remote_socket:Host:hostport -R remote_socket:local_socket
[…] Standardmäßig sind TCP Listening-Sockets auf dem Server nur an die Loopback-Schnittstelle gebunden. Dies kann durch Angabe eines
bind_address
außer Kraft gesetzt werden. Ein leererbind_address
oder die Adresse "*
" gibt an, dass der Remote-Socket alle Schnittstellen überwachen soll. Die Angabe eines Remote-bind_address
ist nur dann erfolgreich, wenn die OptionGatewayPorts
des Servers aktiviert ist (siehesshd_config(5)
).
Dies bedeutet, dass Sie GatewayPorts yes
in sshd_config
für bluehost
haben sollten. Lesen Sie man 5 sshd_config
, um mehr zu erfahren. Vergessen Sie nicht, den Dienst danach neu zu laden.
Stellen Sie sicher, dass an Port 2222 von bluehost keine hängende Verbindung besteht. Testen Sie bei bluehost lsof -t -i:2222
, ob eine Prozess-ID Port 2222 verwendet. Beenden Sie diesen Prozess zusätzlich (z. B. mit kill $(lsof -t -i:2222)
).
Dies löste das Problem für mich. Hoffentlich sind diese Informationen für jemand anderen nützlich. :)