OpenSSH unter Windows bindet Sockets, die für die Remote-Weiterleitung verwendet werden, immer an LOOPBACK

OpenSSH unter Windows bindet Sockets, die für die Remote-Weiterleitung verwendet werden, immer an LOOPBACK

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_addressTeil der -RSpezifikation. In dersshDokumentation(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 leerer bind_addressoder die Adresse *gibt an, dass der Remote-Socket auf allen Schnittstellen lauschen soll. Die Angabe eines Remote ist nur dann erfolgreich, wenn die Option bind_addressdes Servers aktiviert ist (sieheGatewayPortssshd_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 GatewayPortsim 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

verwandte Informationen