SSH vom Client zum eingebetteten Linux über den Server

SSH vom Client zum eingebetteten Linux über den Server

Ich möchte von überall aus eine direkte Verbindung zu einem eingebetteten Linux (genannt C) herstellen können, das keine öffentliche IP-Adresse hat.

C kann eine Verbindung zum Server herstellen (mit SSH-R), und wenn ich mich per SSH beim Server anmelde, kann ich mich anschließend per SSH beim eingebetteten Linux anmelden.

Ich möchte jedoch per SSH vom Client zu C gelangen können, ohne mich zuerst per SSH beim Server anmelden zu müssen. (Ich kann keine Verbindung mit SSH -R von C zum Client herstellen.)

Ist das möglich und wenn ja, wie?

Antwort1

Das geht ziemlich einfach. Eine Möglichkeit ist die Verwendung der Remote-Portweiterleitung von SSH, bei der C dem Server mitteilt, dass er ihm einen Port zurückleiten soll, etwa so:

ssh -R 2222:localhost:22 server

Wenn dieser Befehl von C ausgeführt wird, weist er den Server an, alle Verbindungen zu Port 2222 anzunehmen und an C auf Port 22 weiterzuleiten.

Ebenso könnte man über Firewall-Regeln eine Portweiterleitung auf dem Server einrichten.

Antwort2

Wenn Sie eine Verbindung mit dem weitergeleiteten Port herstellen möchten, benötigen Sie vier Dinge:

  • Geben Sie die öffentliche IP/den öffentlichen Hostnamen des Servers als erstes Argument für an -R, andernfalls wird nur auf lauscht localhost, was offensichtlich von außerhalb des Servers nicht zugänglich ist.
  • Konfigurieren Sie den Server mit GatewayPorts, damit die weitergeleiteten Ports von außen zugänglich sind
  • Verwenden Sie den -gSchalter, um dasselbe grundsätzlich von der Clientseite aus zuzulassen
  • Öffnen Sie den Port 2222in der Server-Firewall.

Der Befehl kann beispielsweise so aussehen:

ssh -g -R server:2222:localhost:22 server

verwandte Informationen