Wie der Titel schon sagt.
Host A fungiert als Server (Bastion-Host, nennen Sie ihn, wie Sie wollen).
Nun führt Host B Folgendes aus:
ssh -R 2222:localhost:22 Benutzer@A
Als Ergebnis wird ein TCP-Socket bei A erzeugt, der jedoch an 2222@ gebunden istSchleifed. h., Remoteverbindungen dorthin verhindern.
So ändern Sie 127.0.0.1 in 0.0.0.0oder irgendetwas anderessinnvoller?
Antwort1
Ihnen fehlt der optionale bind_address
Teil der -R
Spezifikation. In derssh
Dokumentation(verlinkt vonMicrosoft) heißt es:
Standardmäßig sind TCP-Listening-Sockets auf dem Server nur an die Loopback-Schnittstelle gebunden. Dies kann durch die Angabe eines überschrieben werden
bind_address
. Ein leererbind_address
oder die Adresse*
gibt an, dass der Remote-Socket auf allen Schnittstellen lauschen soll. Die Angabe eines Remote ist nur dann erfolgreich, wenn die Optionbind_address
des Servers aktiviert ist (sieheGatewayPorts
sshd_config(5)).
Sie verwenden die Drei-Tupel-Version des Parameters, benötigen aber die Vier-Tupel-Version:
-R port:host:hostport -R [bind_address]:port:host:hostport
Damit sich jeder mit dem Abhörport des Remote-Servers verbinden kann, müssen Sie sicherstellen, dass dieser GatewayPorts
im Server aktiviert ist.sshd_config
Undverwenden Sie eine Befehlsvariante wie diese:
ssh -R :2222:localhost:22 user@A
Der führende Doppelpunkt ( :
) impliziert auch ein führendes Asterisk-Platzhalterzeichen, das Verbindungen von überall her zulässt. Persönlich denke ich, dass diese Version mit dem Platzhalterzeichen deutlicher macht, dass das Geschriebene beabsichtigt ist:
ssh -R *:2222:localhost:22 user@A