Wie stelle ich einer Shell "reverse ssh" zur Verfügung?

8

Szenario:

Viele Embedded-Geräte (mit Linux) draußen in den Feldern, hinter Routern so NAT'd und wir können keine Verbindungen zu ihnen herstellen.

Wir benötigen eine Support-Person, die in der Lage ist, eine Terminal- / Shell-Sitzung auf einem der Geräte zu starten.

Ihr lokales Terminal wird auch hinter einer Unternehmensfirewall NAT sein, also brauchen wir einen zentralen "Treffpunkt", mit dem sie und das Gerät sich verbinden können.

Bei Bedarf könnten wir von der Support-Person verlangen, dass sie sich bei einem Terminal-Server anmeldet, aber ich würde eine Lösung vorziehen, die einfach ein Terminal-Fenster auf ihrem Desktop öffnet.

Wir können (auf anderem Wege) dem Gerät mitteilen, ein beliebiges Skript oder eine Anwendung auszuführen, um die Sitzung zu starten.

Ohne NAT, es ist nur SSH zum Gerät und weg wir gehen. Aber was sind meine Möglichkeiten in dieser NAT-Umgebung?

Wir sind in Ordnung, um Code an jedem Ende oder am Meeting-Point-Server zu entwickeln, wenn es nötig ist, aber natürlich, wenn es Apps gibt, müssen wir keine Sachen schreiben, noch besser.

Hinweise zu anderen Fragen, die ich vielleicht verpasst habe (obwohl ich geschaut habe) oder zu Bewerbungen, die ich für den zentralen "Treffpunkt-Server" in Erwägung ziehen sollte, begrüßten

    
The Archetypal Paul 03.08.2012, 09:30
quelle

2 Antworten

8

SSH ist hierfür ein geeignetes Werkzeug. Sie werden, wie Sie sagen, einen Mittelmann-Server brauchen. Aber es wäre sehr einfach einzurichten, vorausgesetzt, dass Ihre "anderen Mittel zur Ausführung eines Skripts" entfernt sind und von Ihrem Büro ausgeführt werden können.

Starten Sie also einen neuen Server auf einer globalen IP-Adresse (ein Amazon AWS-Mikroknoten ist für ein Jahr frei und würde den Job gut machen) und installieren Sie einen SSH-Deamon. Angenommen, es hat den Hostnamen middleman.example.org .

Das Skript, das auf Ihre eingebetteten Geräte geschrieben wird, sieht folgendermaßen aus:

%Vor%

(Die Authentifizierung mit dem privaten Schlüssel wäre eine Möglichkeit, die Anmeldung nicht interaktiv zu gestalten)

Das Skript, das Sie auf Ihren Desktop-Computern installieren möchten, sieht folgendermaßen aus: (Angenommen, das Argument ist die IP des eingebetteten Geräts und das prod_remote_device.sh führt das obige Skript auf dem ausgewählten eingebetteten Gerät aus.)

%Vor%

Und das sollte Ihre Verbindung zum eingebetteten Gerät weiterleiten.

Ich tippte das aus, ohne irgendwelche Man-Pages zu checken, so offen mit mir über die Details (oder tatsächlich, wenn dieser Ansatz tatsächlich funktionieren würde), während ich ein paar Dinge überprüfe.

    
lynks 03.08.2012, 09:51
quelle
9

Wie wäre es, wenn Sie einfach einen ssh-Server einrichten, der sowohl vom Gerät als auch vom Support-Benutzer erreichbar ist, und das Gerät einen Reverse-Tunnel einrichten lassen (mit Remote-Port-Weiterleitung )?

%Vor%

Dann kann das Support-Personal einfach eine Verbindung zum Server herstellen und sich mit

anmelden %Vor%

Natürlich müssen hier mehrere Sicherheitsaspekte berücksichtigt werden, abhängig davon, welche Art von Informationen die Geräte besitzen und auf welche Weise die Support-Organisation eingerichtet ist.

    
Anders Lindahl 03.08.2012 09:49
quelle

Tags und Links