Key-basierte SSH Logins mit PuTTY

Hier wird beschrieben, wie man vom Windows-Desktop mit PuTTY auf den Pi mit SSH verbinden kann, ohne Username und Passwort einzugeben.

Benötigt wird dazu PuTTY als SSH Client und Puttygen zum Erzeugen der Keys. Alle benötigten Programme sind hier zu finden.
Die Programme sind ausführbar und müssen daher nicht installiert werden

Ein Keypaar generieren

Mit PuTTYgen wird nun ein private/public Keypaar erzeugt. Dafür wird nun der PuTTY Key Generator gestartet. Die Einstellun­gen wie im Bild vor­nehmen:

Auf Generate drücken und und während der Erstellung der Keys den Cursor mit der Maus über das leere Feld bewegen.

Es wurde ein private/public Keypaar erzeugt. Auf die Eingabe von Key Comment und Key Passphrase wird hier verzichtet. Bei Key Comment wird üblicherweise die Mail-Adresse eingetragen. Mit der Key Passphrase kann ein Kennwort eingegeben werden, welches dann beim Verbindungsvorgang eingegeben werden muss. Es erhöht zwar die Sicherheit, ist aber in geschlossenen Netzwerken nicht unbedingt erforderlich.

Public und private Key speichern. Den Public Key als Textdatei (zB. id_rsa.txt) und Private Key mit der Endung .ppk speichern.
Den Private Key vornehmlich in einem Bereich speichern, in dem nur der Anwender Zugriff hat.

Den Public Key auf dem Raspberry Speichern

Den Public Key nun auf den Raspberry übertragen. Das Programm FileZilla ist zB. ein geeigneter FTP-Client um den Datentransfer durchzuführen.

Die Datei id_rsa.txt in das Verzeichnis pi am Raspberry kopieren.

Auf dem Raspberry als User pi einloggen und in der Konsole ein Verzeichnis .ssh anlegen:

mkdir ~/.ssh
chmod 700 ~/.ssh
sudo cat id_rsa.txt >> ~/.ssh/authorized_keys
nano ~/.ssh/authorized_keys

In der Datei authorized_keys muss der Key in einer einzelnen Zeile stehen, dh., es sind alle Zeilenvorschübe etc. zu entfernen. Vor dem eigentlichen Key muss ssh-rsa eingefügt werden, falls nicht vorhanden. Es sollte etwa so wie im Bild aussehen.

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20170207"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEApInMGIfA370....$
---- END SSH2 PUBLIC KEY ----

SSHD Konfigurieren

~ $ sudo nano /etc/ssh/sshd_config

In der sshd_config folgenden Eintrag kontrollieren und eventuell vornehmen

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

und dann den sshd neu starten:

~ $ sudo /etc/init.d/ssh restart

Den Private Key an das Profil binden

PuTTY starten, das Profil laden und die Kategorie SSH/Auth aufrufen

im Feld Connection / Data Auto-login username den User pi eintragen.

Im Feld Private key file for authentication Ort und Name des Private Key Files eintragen, wieder zurück in die Katgorie Session und die Taste Save drücken.
Für ein Login am Raspberry nun PuTTY Starten und das entsprechende Profil auswählen.

Kennwortauthentifizierung auf dem Raspberry Pi deaktivieren

Nachdem wir nun eine Verbindung mit dem Raspberry Pi mithilfe von Schlüsseln herstellen können, kann die Kennwortauthentifizierung für zusätzliche Sicherheit vollständig deaktiviert werden. Damit kann man sich nur mehr von Rechnern mit dem PI verbinden, auf denen der Public Key gespeichert ist.

Dazu die SSHD Configuration öffnen

~ $ sudo nano /etc/ssh/sshd_config

und den Eintrag PasswordAuthentication yes auf PasswordAuthentication no ändern, und dann den sshd neu starten:

~ $ sudo /etc/init.d/ssh restart

Falls der RPi ohne Tastatur / Monitor betrieben wird, ist es empfehlenswert eine eigene Session von Putty für diesen Vorgang zu verwenden, um im Fehlerfall noch eine gültige Verbindung für Korrekturen offen zu haben.