Sie fordern ihn auf, Ihren lokalen Port 22 abzuhören und Verbindungen an den Port 8090 eines Remote-Systems weiterzuleiten. Dies ist nicht möglich, da Ihr lokaler Port 22 bereits von Ihrem lokalen SSH-Server belegt ist.
Ich denke, was Sie suchen, ist die Fernweiterleitung. Durch Ersetzen -L 22:localhost:8090
durch -R 8090:localhost:22
wird der Remote-Host angewiesen, Port 8090 abzuhören und Anforderungen an Ihren SSH-Server weiterzuleiten.
Wenn Sie die Verbindung aktiv lassen, damit Sie später von einem Remotestandort aus zugreifen können, sollten Sie sicherstellen, dass die Verbindung nicht aufgrund von Inaktivität unterbrochen wird, indem Sie die entsprechenden Optionen ( -o TCPKeepAlive=yes
oder -o ServerAliveInterval=30
) hinzufügen.
So werden Sie mit etwas enden, wie:
ssh -N user@my_server -R 8090:localhost:22 -o ServerAliveInterval=30
Wenn einer der Netzwerk-Hops zwischen Ihnen und dem Server zu einem beliebigen Zeitpunkt ausfällt, wird die Verbindung trotz der von Ihnen angegebenen KeepAlive-Optionen getrennt. Daher möchten Sie diesen Befehl möglicherweise zu inittab hinzufügen oder sich das daemontools-Paket oder Ihre Distribution ansehen äquivalent, so dass es immer beim Booten startet und neu gestartet wird, wenn es aus einem anderen Grund als dem Herunterfahren des Systems beendet wird (oder Sie können es über ein Shell-Skript ausführen, das eine Endlosschleife ausführt, aber init oder daemontools sind sauberere Lösungen).
GatewayPorts Yes
zu meiner sshd_config hat mir geholfen, den Port für die Öffentlichkeit zu öffnen.Der Grund, warum Sie dies nicht tun können, ist, dass Sie versuchen, Port 22 auf dem lokalen Computer an Port 8090 auf dem Remoteserver weiterzuleiten, und auf Port 22 auf dem lokalen Server bereits etwas ausgeführt wird. Höchstwahrscheinlich läuft ein SSH-Server. Sie können dies beheben, indem Sie die 22 auf einen anderen Wert ändern. Sie können überprüfen, ob ein Port frei ist, indem Sie Folgendes ausführen:
Hier werden alle Listening-Sockets aufgelistet. Wenn der Port also nicht aufgeführt ist, ist er frei.
quelle
Ich verwende den Befehl lsof -i: PortNumber, um zu überprüfen, ob der Port frei ist:
Wenn der Port frei ist, wird in der Ausgabe nichts angezeigt.
quelle