HowTo: SSH Proxy einrichten

Hier kannst du dein Revolution Pi Projekt der Community vorstellen
Post Reply
Timo
Posts: 44
Joined: 25 Jan 2017, 10:08

HowTo: SSH Proxy einrichten

Post by Timo »

Vorwort
Das hier ist ein kleines Projekt, welches im Rahmen eines größeren Revolution Pi Projekts entstanden ist. Vielleicht hilft es dem ein oder anderen weiter.

Worum geht es?
Bei meinem RevPi Projekt ist der Pi über einen USB Netzwerkadapter mit einem PC (nachfolgend "Anlagenrechner" genannt) verbunden, der wiederum am Firmennetzwerk hängt. Dies hat den Vorteil, das man sich nicht mit der IT, der Domäne und irgendwelchen Sicherheitsproblemen herumärgern muss. Aber das Vorgehen hat auch den Nachteil, das ich mich immer mittels Windows Remotedesktopverbindung (oder ähnlichen Techniken) erst auf den Anlagenrechner aufschalten muss, wenn ich auf den RevPi will. Das ist etwas umständlich und da am Anlagenrechner Leute arbeiten, muss man sich immer abstimmen.

Zum Glück geht es auch anders.

Die Lösung
Das Zauberwort heißt "SSH Tunnel" oder "SSH Proxy".

Einerseits findet man zu dem Thema sehr viele Beiträge im Internet, doch andererseits beschäftigen die sich meist damit, wie man normale HTTP Verbindungen über SSH tunneln kann. Das hilft uns hier nicht viel weiter. Diese Seite hat mich dann endlich auf die richtige Spur gebracht: https://wiki.ubuntuusers.de/SSH/#SSH-Tunnel (Der Teil mit "Doppelter SSH-Tunnel über zwei Konsolen" ist der wichtige Teil)

Da nicht ersichtlich ist unter welcher Lizenz die Grafiken stehen, habe ich die Entscheidende selbst neu gezeichnet und hier hochgeladen:
SSH Proxy.png
SSH Proxy.png (35.83 KiB) Viewed 8093 times
Auf dem Client PC und dem Anlagenrechner läuft jeweils ein Windows 7.

Auf dem Anlagenrechner, muss ein Proxy eingerichtet werden, der Anfragen von außen (aus dem Firmennetzwerk), die an einem bestimmten Port ankommen, auf einen anderen Port des RevPi weiterleiten kann. Die komplette Verbindung ist wie bei SSH üblich verschlüsselt und man muss sich nach wie vor durch einen Benutzernamen und Passwort am RevPi anmelden. Alle Anfragen an den Anlagenrechner auf anderen Ports, werden nicht an den RevPi weitergeleitet.

Praktische Umsetzung:
  1. Auf dem Anlagenrechner muss das Windows Tool "Putty" installiert werden. Downloadquelle: https://www.chiark.greenend.org.uk/~sgt ... atest.html
    (Getestet habe ich mit Version 0.70, 32 Bit, Downloadname: "putty-0.70-installer.msi")
  2. Nach erfolgreicher Installation CMD starten
  3. Folgende Zeile einzippen: plink -ssh -L 0.0.0.0:5000:localhost:22 [RevPi] -l pi -pw [PASSWORT] -N -v
    • -ssh stellt sicher, das eine SSH Verbindung hergestellt wird. Ist nur zur Sicherheit.
    • -L 0.0.0.0:5000:localhost:22 richtet die Portweiterleitung auf den RevPi ein. Und zwar von jedem beliebigen Interface auf Port 5000 zum RevPi auf Port 22. An Stelle von "0.0.0.0" hatte ich hier anfänglich den Rechnernamen des Anlagenrechners für die Anbindung an das Firmennetzwerk eingetragen, aber damit hat es nicht funktionieren wollen.
    • [RevPi] muss mit der IP oder dem Namen des Revolution Pi ersetzt werden.
    • -l pi ist der Benutzer, mit dem sich der Anlagenrechner am RevPi anmeldet.
    • [PASSWORT] ist das Passwort für den Benutzer "pi".
    • "-N" sorgt dafür, das auf dem Anlagenrechner nicht auch eine SSH Session geöffnet wird.
    • "-v" gibt mehr Debugausgaben auf der Konsole aus.
    • Als Port habe ich Port 5000 gewählt. Selbstverständlich kann man stattdessen auch jeden anderen Port nehmen, der nicht anderweitig verwendet wird.
  4. Zeile mit einem Druck auf Enter ausführen.
  5. Auf dem Client PC könnt ihr euch nun über ein SSH Programm eurer Wahl (ich empfehle wieder Putty), mit dem Anlagenrechner verbinden.
Da es so zwar funktioniert, aber etwas umständlich einzurichten ist, hier eine von vielen Möglichkeiten wie man den Proxy automatisch und versteckt bei einer Benutzeranmeldung starten lassen kann:
  1. Folgenden Code in eine Textdatei kopieren:

    Code: Select all

    CONST password = "[PASSWORT]"
    DIM   command : command = "plink -ssh -L 0.0.0.0:5000:localhost:22 [RevPi] -l pi -N -pw " & password
    CreateObject("Wscript.Shell").Run "" & command & "", 0, False
    
    [PASSWORT] muss durch dem Passwort des RevPi Benutzers "pi" ersetzt werden
    Für [RevPi] muss erneut die IP oder der Name des Revolution Pi eingetragen werden.
  2. Zum Schluss die Datei unter einem Namen eurer Wahl und der Endung ".vbs" abspeichern. (Speicherort und Dateinamen merken!)
  3. Nun entweder eine Verknüpfung im Autostart einrichten, damit es bei jedem Rechnerstart (+ Benutzeranmeldung) aufgerufen wird, oder als geplanten Task einrichten.
So bald die VBS Datei auf dem Anlagenrechner ausgeführt wurde, kann man sich vom Client PC aus über Putty auf den Anlagenrechner aufschalten, und wird an den RevPi weitergereicht.
Sollte man aus irgendeinem Grund den SSH Proxy neu starten wollen/müssen, so muss man auf dem Anlagenrechner die Anwendung "plink.exe" über den Task Manager oder Taskkill beenden.
Post Reply