Raspberry Pi - Remote SSH Zugriff übers Internet

Raspberry Pi mit Telit LTE/UMTS Module

Der Raspberry Pi ist ein kleines Embedded Board, das in vielen Bereichen eingesetzt werden kann. Es erfreut sich nicht nur bei Privatanwendern über große Beliebtheit, auch in der Industrie findet es immer häufiger Anwendung.

Dank der kompakten Baugröße und des geringen Energieverbrauchs eignet es sich perfekt für Projekte und Anwendungen, die man an unterschiedlichen Orten betreiben möchte – z.B. sammeln von Wetterdaten an unterschiedlichen Orten oder messen des Energieverbrauchs an unterschiedlichen Zähleranlagen.

Die Konfiguration und der Zugriff auf den Raspberry erfolgt in der Regel über SSH, wenn man sich im gleichen Netz befindet. Sobald man das Projekt aber an einem entfernten Standort ausgerollt hat, befindet man sich nicht mehr im gleichen Netz und der Zugriff per SSH ist nicht mehr möglich.

Um trotzdem Zugriff (über das Internet) zu erlangen, gibt es verschiedene Möglichkeiten, die jedoch unterschiedliche Anforderungen an das vom Raspberry genutzte Netz stellen.

Raspberry Pi Compute Module 3B+ auf einem PoE Breakout Board

Anforderungen an das Netz

In diesem Beitrag möchte ich eine Möglichkeit des Fernzugriffs vorstellen, die komfortabel genutzt werden kann und keinerlei Konfiguration an dem Netz erfordert, das vom Raspberry genutzt wird. Dieses Netz kann ein lokales LAN oder WLAN sein, das über einen Router mit dem Internet verbunden ist. Dabei spielt die Art der Einwahl (DSL/Glasfaser/Standleitung) keine Rolle, auch der Betrieb hinter einem LTE-Router ist möglich.

Die folgende Möglichkeit kann somit auch in Netzen genutzt werden, für die man selbst keine Admin-Berechtigungen hat. Dies funktioniert, da wir in dem Szenario nur mit ausgehenden Verbindungen arbeiten (aus Raspberry Sicht).

Damit der Remote Zugriff auf unseren Raspberry funktioniert, nutzen wir unsere IoT Plattform (Siincos Remote Device Management) und den zugehörigen Siincos Cloud VPN Dienst. Über eine Web App können wir unseren Raspberry fernsteuern und die Einwahl in das VPN Netz triggern.

Client-Managed Remote VPN

Geben wir über die Webanwendung das Signal zur Einwahl, baut der Raspberry die VPN Verbindung zum VPN-Server auf. Sobald er sich erfolgreich in das VPN Netz eingewählt hat, bekommt er eine IP Adresse innerhalb dieses Netzes vom VPN-Server zugewiesen. Diese bekommen wir angezeigt und können sie nutzen, um uns per SSH am Raspberry einzuloggen.
Dazu müssen wir lediglich mit unserem Computer in dem gleichen VPN-Netz eingeloggt sein.

Neben dem Managen der VPN Verbindung können wir den Raspberry mit dem Tool zudem auch herunterfahren oder neu durchbooten.

ssh username@raspberry_vpn_ip

Funktionsweise

Das Grundprinzip basiert auf zwei Diensten, die auf dem Raspberry aktiv sein müssen:

  1. Der Raspberry verfügt über eine VPN-Client Konfiguration (in diesem Beispiel OpenVPN) und kann sich jederzeit in das VPN Netz einwählen. Die VPN-Verbindung ist nicht dauerhaft aktiv, da das nur unnötig Ressourcen beanspruchen würde.
  2. Ein zweiter Dienst erlaubt uns dem Raspberry mitzuteilen, wann er sich in die VPN einwählen soll. Mit der Webanwendung können wir diesen Dienst – und somit den VPN-Status unseres Raspberry – fernsteuern. Der Dienst läuft in der Cloud, der Raspberry fragt dort seinen VPN-Status dort ab.

Alle Verbindungen sind SSL/TLS verschlüsselt (mittels X.509 Zertifikaten), die Kommunikation des Raspberry und unserer IoT Plattform erfolgt über MQTTS (= verschlüsseltes MQTT), der Traffic über die VPN ist ebenfalls komplett gesichert.

noch Fragen?

Wir verwenden das Tool (Siincos Remote Device Management) als Teil von unserem Siincos Remote Connect, um einen sicheren Fernzugriff bzw. Wartungszugang zu unseren ausgerollten Linux Devices zu erhalten. Wenn auch Ihr einen sicheren Remote Access für eure Devices oder Maschinen benötigt, dann sprecht uns an. Wir bieten euch das hier vorgestellte Tool gerne an, entwickeln aber auch individuelle IoT Lösungen nach euren Wünschen.