Automatischer SSH-Login
Für viele Anwendungsfälle wie zum Beispiel die Steuerung der Raspberry Pi durch openHAB wie in diesem Artikel beschrieben, ist ein automatischer SSH-Login erforderlich. Auch kann ein ständiger Login zu einem bestimmten Rechner somit deutlich erleichtert und beschleunigt werden.
Dazu ist zunächst zu wissen, dass SSH eine sogenannte PKI-Infrastruktur nutzt. Das bedeutet, dass jeder Client/Server/Gerät ein Schlüsselpaar besitzt, welches aus einem privaten sowie einem öffentlichen Schlüssel besteht. Mit dem Tool ssh-keygen und dessen folgenden Aufruf:
erzeugen wir ein solches Schlüsselpaar mithilfe des RSA-Algorithmus in einer Länge von 2048 Bit. Ein Passwort kann wahlweise gesetzt werden, für unseren Anwendungsfall für die Steuerung mittels openHAB lassen wir dieses frei und bestätigen die Abfragen lediglich mit der Enter-Taste.
Nun wurden im Heimatverzeichnis (des Nutzers, der die Schlüssel erstellen lies) im Unterordner „.ssh“ zwei Dateien erstellt. Die Datei „id_rsa“ enthält den privaten Schlüssel und sollte gesichert und unter Verschluss gehalten werden. In der Datei „id_rsa.pub“ befindet sich der öffentliche Schlüssel. Diesen fügen wir später im Zielsystem, also dem Linuxsystem bei welchem wir uns automatisch anmelden wollen, als Schlüssel eines vertrauenswürdigen Kommunikationspartners ein.
Den öffentlichen Schlüssel verteilen wir nun auf dem Zielsystem:
Nun testen wir die Verbindung:
Sollte dies die erste Verbindung zu diesem System sein, erfolgt die einmalige Abfrage, ob der öffentliche Schlüssel zu den „known-Hosts“ hinzugefügt werden soll. Zukünftig findet der Login unmittelbar und ohne Abfrage des Nutzerpasswortes statt.
Besonderheiten bei openHAB
Für die Verwendung von openHAB gibt es leider ein paar Besonderheiten zu beachten. Während der grundsätzlichen Installation von openHAB via apt-Repository wird der Systemnutzer „openhab“ mit dem Heimatverzeichnis „/var/lib/openhab“ eingerichtet. Bei jedem Neustart von openHAB jedoch wird ein Script ausgeführt, dass sämtliche Rechte innerhalb der openHAB-Verzeichnise neu setzt. Daher gehen wir wie folgt vor.
Angemeldet als Nutzer „root“ ändern wir zunächst den Nutzer „openhab“ in sofern, dass wir als diesen Nutzer eine Shell benutzen können. Dazu vergeben wir mit
ein Passwort für den Nutzer und weisen ihm mit
eine Bash-Shell zu.
Anschließend können wir mit
in den Kontext des Nutzers openhab wechseln und mit seinen Rechten und seiner Umgebung auf der Shell arbeiten. Wir erstellen wie bereits oben beschrieben ein Schlüsselpaar mit
und verschieben anschließend den neu generierten Ordner „.ssh“ an einen Ort, der nicht von der Neuverrechtung beim Start von openHAB betroffen ist:
Der Ordner „/scripts“ wurde im Verlauf der Anleitung „OpenHAB – Installation“ angelegt. Falls nicht, erstellen wir diesen mit
und übetragen die Besitzrechte an den Nutzer „openhab“ mit
In unseren Scripten, welche als „openhab“ ausgeführt werden, geben wir künftig bei einer SSH-Verbindung explizit den Ort unseres privaten Schlüssels an, beispielsweise:
Sollte es sich bei unserem Zielsystem, auf welchem OpenHAB sich anmelden soll, um einen Raspberry mit der Distribution Raspbian handeln, müssen wir zunächst auf diesem ein Passwort für den Nutzer „root“ vergeben. Dazu loggen wir uns direkt als Nutzer „pi“ auf dem entsprechenden Zielsystem an und vergeben das root-Passwort mittels
Nach zweimaliger Eingabe wurde das Passwort gesetzt.
Zurück auf dem OpenHAB-Server „installieren“ wir nun unseren öffentlichen Schlüssel auf jedes Zielsystem, zu welchem wir uns mit unseren Scripten verbinden wollen. Dazu fügen wir unseren öffentlichen Schlüssel den autorisierten Schlüsseln auf dem Zielsystem hinzu:
Wir verlassen den Kontext des Nutzers „openhab“ mit
und bewegen uns wieder als Nutzer „root“ auf der Kommandozeile.
Da sich openhab nun dummerweise nicht den öffentlichen Schlüssel des entfernten Geräts merken kann, müssen wir leider die Überprüfung dessen deaktivieren.
Dazu entfernen wir in der Datei „/etc/ssh/ssh_config“ die Raute vor der Zeile
so dass diese Anweisung aktiviert wird.
11.02.2016 @ 22:58
vergiss es ^^
11.02.2016 @ 22:35
Hallo Daniel,
erstmal Danke für deinen Blog, hat mir den Einstieg um einiges erleichtert in OpenHab. Nur hab ich das gleiche Problem wie Pedro, versteh nur nicht ganz wie ich den Schlüssel auf dem OpenHAB Server generiere… das anschließende kopieren sollte kein Problem mehr sein
06.01.2016 @ 07:01
Die Schlüssel erstellst du auf dem openHAB-Server. Dort gibts du dann auch den Inhalt der id_rsa.pub aus. Diesen Inhalt kopierst du in die Datei ~/.ssh/authorized_keys2 auf deiner Himbeere!
Dann noch einmal vom openHAB-Server manuell via SSH bei der Himbeere einloggen und ab sofort sollte ein Passwortloser Login möglich sein.
Kopieren und Einfügen kannst du auch via Putty machen.
04.01.2016 @ 11:06
hi, die nervensäge schon wieder.
ich habe das komplett so durchgeführt wie beschrieben, wenn ich diesen teil eingebe
cat id_rsa.pub >> ~/.ssh/authorized_keys2
kommt: cat: id_rsa.pub: Datei oder Verzeichnis nicht gefunden
aber die dateien sind alle da. ich versteh das echt nicht.