GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie richte ich einen SSH-Tunnel ein, um SSH weiterzuleiten?

Lösung 1:

Sie bitten ihn, Ihren lokalen Port 22 abzuhören und Verbindungen an den Port 8090 eines entfernten Systems weiterzuleiten. Das können Sie nicht tun, da Ihr lokaler Port 22 bereits von Ihrem lokalen SSH-Server belegt ist.

Ich denke, was Sie suchen, ist die Fernweiterleitung. -L 22:localhost:8090 ersetzen mit -R 8090:localhost:22 weist den entfernten Host an, auf Port 8090 zu lauschen und Anfragen an Ihren SSH-Server weiterzuleiten.

Wenn Sie die Verbindung laufen lassen, damit Sie später von einem entfernten Standort aus zugreifen können, sollten Sie sicherstellen, dass die Verbindung nicht aufgrund von Inaktivität unterbrochen wird, indem Sie die entsprechenden Optionen hinzufügen (-o TCPKeepAlive=yes oder -o ServerAliveInterval=30 )

Am Ende erhalten Sie also etwas wie:

ssh -N [email protected]_server -R 8090:localhost:22 -o ServerAliveInterval=30

Auch wenn einer der Netzwerk-Hops zwischen Ihnen und dem Server zu irgendeinem Zeitpunkt ausfällt, wird die Verbindung trotz aller von Ihnen angegebenen KeepAlive-Optionen unterbrochen, sodass Sie diesen Befehl möglicherweise zu inittab hinzufügen oder in das daemontools-Paket oder das Ihrer Distribution schauen möchten Äquivalent , sodass 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önnten es von einem Shell-Skript ausführen, das eine Endlosschleife durchläuft, aber init oder daemontools sind sauberere Lösungen).

Lösung 2:

Der Grund, warum Sie dies nicht tun können, liegt darin, dass Sie versuchen, Port 22 auf dem lokalen Computer an Port 8090 auf dem Remote-Server weiterzuleiten, und auf Port 22 auf dem lokalen Server bereits etwas ausgeführt wird. Höchstwahrscheinlich haben Sie einen SSH-Server am Laufen. 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:

# netstat -lep --tcp

Dies listet alle lauschenden Sockets auf, wenn der Port also nicht aufgeführt ist, dann ist er frei.

Lösung 3:

Ich verwende den Befehl lsof -i :PortNumber, um zu prüfen, ob der Port frei ist:

# lsof -i :2272

Wenn der Port frei ist, sehen Sie nichts in der Ausgabe.


Linux
  1. So ändern Sie den SSH-Port unter Linux

  2. So richten Sie passwortloses SSH unter Linux ein

  3. So richten Sie einen Reverse-SSH-Tunnel unter Linux ein

  4. So richten Sie eine passwortlose SSH-Anmeldung unter Linux ein

  5. HTTPS-SSH-Tunnel

So ändern Sie den SSH-Port unter Linux

So aktivieren Sie SSH auf CentOS

So ändern Sie den SSH-Port in Ubuntu

So ändern Sie den SSH-Port in CentOS

Wie ändere ich den SSH-Port auf Centos 7.x?

Wie ändere ich den SSH-Port auf Ubuntu?