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).