Der Befehl zum Weiterleiten von Port 80 von Ihrem lokalen Computer ( localhost
) an den Remote-Host an Port 8000 lautet:
ssh -R 8000:localhost:80 oli@remote-machine
Dies erfordert eine zusätzliche Optimierung des SSH-Servers. Fügen Sie die folgenden Zeilen hinzu /etc/ssh/sshd_config
:
Match User oli
GatewayPorts yes
Laden Sie als Nächstes die Konfiguration neu, indem Sie den Server ausführen sudo reload ssh
.
Die Einstellung GatewayPorts yes
bewirkt , dass SSH den Port 8000 an die Platzhalteradresse bindet, sodass er für die öffentliche Adresse von remote-machine
( remote-machine:8000
) verfügbar wird .
Wenn Sie die Option benötigen, nicht alles an die Platzhalteradresse zu binden, wechseln Sie GatewayPorts yes
zu GatewayPorts clientspecified
. Da ssh
standardmäßig eine Bindung an die Loopback-Adresse erfolgt, müssen Sie ein Leerzeichen bind_address
für die Bindung der Platzhalteradresse angeben :
ssh -R :8000:localhost:80 oli@remote-machine
Das :
Vorher 8000
ist obligatorisch, wenn auf festgelegt GatewayPorts
ist clientspecified
und Sie den öffentlichen Zugriff zulassen möchten remote-machine:8000
.
Relevante manuelle Auszüge:
ssh (1)
-R [Bindeadresse:] Port: Host: Hostport
Gibt an, dass der angegebene Port auf dem Remote-Host (Server) an den angegebenen Host und Port auf der lokalen Seite weitergeleitet werden soll. Dies funktioniert durch Zuweisen eines Sockets zum Abhören des Ports auf der Remote-Seite. Wenn eine Verbindung zu diesem Port hergestellt wird, wird die Verbindung über den sicheren Kanal weitergeleitet und eine Verbindung zum Host-Port hostport vom lokalen Computer hergestellt. Standardmäßig ist der Listening-Socket auf dem Server nur an die Loopback-Schnittstelle gebunden. Dies kann durch Angabe einer bind_address überschrieben werden. Eine leere bind_address oder die Adresse '*' gibt an, dass der Remote-Socket alle Schnittstellen überwachen soll. Die Angabe einer fernen Bindungsadresse ist nur dann erfolgreich, wenn die GatewayPorts-Option des Servers aktiviert ist (siehe sshd_config (5)).
sshd_config (5)
GatewayPorts
Gibt an, ob Remotehosts Verbindungen zu für den Client weitergeleiteten Ports herstellen dürfen. Mit GatewayPorts kann festgelegt werden, dass sshd zulässt, dass Weiterleitungen von Remoteports an Nicht-Loopback-Adressen gebunden werden, sodass andere Hosts eine Verbindung herstellen können. Das Argument kann "Nein" sein, um zu erzwingen, dass Remote-Port-Weiterleitungen nur für den lokalen Host verfügbar sind, "Ja", um zu erzwingen, dass Remote-Port-Weiterleitungen an die Platzhalteradresse gebunden werden, oder "Clientspezifiziert", damit der Client die Adresse auswählt, an die er sich richtet Die Weiterleitung ist gebunden. Der Standardwert ist "Nein".
Siehe auch:
GatewayPorts
war das Wundermittel hier. Ich finde es gut, dass Sie eine Version gefunden haben, mit der ich diese ziemlich leistungsstarke Technik auf bestimmte Benutzer beschränken kann.ssh
Befehl ausgeführt wird. Hiermit wird konfiguriert, ob andere Clients mit den weitergeleiteten Ports auf dem Server kommunizieren können.-R :8000:127.0.1.1:80
(oder eine andere127.x.x.x
Adresse). Andernfalls können Sie die Remote-IP-Adresse nicht ermitteln.Wenn dies auf dem Server der Fall ist
GatewayPorts no
, können Sie dasselbe Ergebnis erzielen, indem Sie das Programmssh -g -L 8001:localhost:8000 oli@remote-machine
auf dem Server ausführen, nachdem Sie denssh -R
Befehl auf dem Client ausgeführt haben. Dadurch wird der Loopback-Port 8000 auf dem Server für alle Schnittstellen an Port 8001 zugänglich.quelle