Mittwoch, 10. Februar 2016

Schlüssel basierte SSH Verbindung zum Raspberry

Wird mit dem Raspberry remote und ohne GUI gearbeitet, kommt SSH zum Einsatz. Mit dem Benutzernamen und dem Passwort kann man sich mit dem Raspberry verbinden. Unter Windows wird für diese Verbindung Putty verwendet bei Unix,Linux und macOS/OSX kann man das mit Bordmitteln.
Putty kann man von http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html herunterladen.
Diese Verbindung statt mit einem Passwort mit einem SSH Schlüssel aufzubauen hat einige Vorteile wie z.B.
  • Das Passwort wird nicht über das Netzwerk übertragen
  • Wenn der Raspberry im Internet steht, wird die Wahrscheinlichkeit von erfolgreichen Brute-Force Angriffen erheblich reduziert
  • man kann sich automatisiert und ohne Passwort mit dem Raspberry verbinden

Erstellen der Schlüssel

Um unter Windows einen Schlüssel zu erstellen wird von der Putty Webseite der PuttyGen geladen und gestartet. Anschließend wird geprüft ob der Schlüsseltyp auf SSH2 RSA steht und ob die Schlüssellänge ausreichend erscheint. Wobei 2048 ausreichend sein sollte. Zum Erstellen des Schlüssels wird auf Generate geklickt.

Ist der Schlüssel erzeugt, werden im PuttyGen Informationen zum Schlüssel angezeigt.

Wer mag kann unter Key Comment einen Kommentar zu diesem Schüssel einfügen, damit man später den Verwendungszweck wieder erkennen kann. Zusätzlich kann man seinen Schlüssel mit einem Passwort schützen, dies muss dann bei jeder Verbindung zum Raspberry eingegeben werden. Ich verwende dies in diesem Fall nicht, da ich den Vorteil eines schnellen, automatisierbaren und passwortfreien Verbindungsaufbau haben möchte.
Sind alle Informationen so vollständig wie man sich das wünscht, wird der Privatschlüssel gespeichert, indem auf Save Private Key geklickt wird. Normalerweise ist die Dateiendung ppk.
Man kann ebenfalls den Öffentlichen Schlüssel, den public Key speichern, notwendig ist dies hier nicht. Wir verwenden den Keystring aus dem PuttyGen und des Weiteren kann dieser öffentliche Schlüssel bei Bedarf immer aus dem privaten Schlüssel erzeugt werden.
Da der öffentliche Schlüssel später noch verwendet wird, wird PuttyGen erst mal nicht geschlossen.


Raspberry für SSH Keys konfigurieren

Davon ausgehend, daß der Raspberry läuft, wird mit Putty eine Nutzer/Passwort Verbindung aufgebaut.


In diesem Beispiel wird die Konfiguration für den Standardnutzer pi vorgenommen. Nach dem einloggen wird das Verzeichnis für den öffentlichen SSH Schlüssel erzeugt. Die erfolgt mit dem Befehl:

mkdir -p ~/.ssh

Danach wird die Datei für alle mit dem Nutzer verknüpften Schlüssel geöffnet (und falls nicht vorhanden erzeugt)

sudo nano ~/.ssh/authorized_keys

Aus dem PuttyGen wird der vollständige öffentliche Schlüssel markiert und kopiert. Dieser wird in dem Puttyfenster mit einem Rechtsklick wieder eingefügt. Der Schlüssel darf dabei nur auf einer Zeile stehen. Mit der Ende Taste sollte man an das Ende der Zeile springen und schauen dies mit dem Ende des Schlüssels in PuttyGen übereinstimmt.

Die Datei wird mit der Tastenkombination CTRL X anschließend Y und Enter gespeichert. Ist die Datei gespeichert wird diese mit folgenden Befehlen gesichert:

sudo chmod 644 ~/.ssh/authorized_keys
sudo chown pi:pi ~/.ssh/authorized_keys
sudo chmod 700 ~/.ssh

Der öffentliche Schlüssel befindet sich auf dem Raspberry, jetzt muss noch geprüft werden ob die Konfiguration für SSH passt. Dazu wird die Konfigurationsdatei mit

sudo nano /etc/ssh/sshd_config

geöffnet und geprüft ob die folgenden Einstellungen so in der Datei stehen (wahrscheinlich an unterschiedlichen Stellen in der Datei). Gegeben falls müssen voranstehende # Symbole entfernt werden.

PermitRootLogin no
AllowUsers pi
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
UsePAM no

Mussten an der Datei Änderungen vorgenommen werden, wird diese mit der Tastenkombination CTRL X anschließend Y und Enter gespeichert. Anschließend wird der SSH Deamon neu gestartet:

sudo systemctl restart sshd

Putty für die Verbindung mit SSH Key konfigurieren

Zu guter Letzt muss noch der Putty als SSH Client konfiguriert werden. Im Putty müssen unter Session die IP Adresse oder der Hostname eingegeben werden. Unter der Kategorie Connection->Data wird der Benutzername eingegeben und bei Connection->SSH->Auth den Pfad und Dateinamen des privaten Schlüssels. Siehe die folgenden drei Screenshots:
Abschliessend werden die Einstellungen gespeichert, indem unter Session ein Sessionname gewählt wird und auf Save geklickt wird.
 Später kann die Session mit einem Doppelklick gestartet werden. Wenn eine SSH Verbindung mit dem Schlüssel aufgebaut, sieht man die Erfolgsmeldung abschließend in der Konsole.
Über Kommentare und Hinweise zu dem Post freue ich mich :)

Keine Kommentare:

Kommentar veröffentlichen