Good to Know Database

Raspbian Wheezy: SSH-Login mit Zertifikaten


Beim Aufbau einer SSH-Verbindung zu einem Linux-System benötigen Sie in der Regel ein Passwort um sich auf dem Linux-System zu authentifizieren. Eine Alternative zu der Passwort-Authentifizierung auf einem entfernten Linux-System bietet ein sogenannter SSH-Schlüssel. Dadurch müssen Sie sich beim SSH-Server nicht mehr mit Ihrem Passwort authentifizieren. Bei SSH2 können Sie für den Schlüssel den Digital Signature Algorithm (DSA) oder das asymmetrische Kryptosystem RSA (Rivest, Shamir und Adleman) verwenden.

In der folgenden Anleitung möchte ich beschreiben wie Sie auf einem Windows System mit PuTTYgen und unter Linux ein entsprechendes Schlüsselpaar erstellen und dieses auf Ihrem Raspberry Pi einbinden können. Als Betriebssystem dient in diesem Fall das derzeit aktuelle Raspbian Image vom 09.02.2013 (2013-02-09-wheezy-raspbian.zip).

SSH-Schlüsselpaar unter Windows erzeugen und auf dem Raspberry Pi einpflegen

Damit Sie unter Windows ein Schlüsselpaar für die Authentifizierung am Linux-System des Raspberry Pi's erstellen können, benötigen Sie PuTTYgen. Für die Anmeldung am SSH-Server von Raspbian wird auch PuTTY benötigt. Beide Anwendungen können Sie einzeln oder als Installationspaket von http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html herunterladen.

Nachdem Sie PuTTYgen heruntergeladen und gegebenenfalls auch installiert haben, starten Sie die Anwendung PuTTYgen. Sobald die Anwendung gestartet ist können Sie die Anzahl der Bits für den Schlüssel anpassen und anschließend auf die Schaltfläche Generate klicken.

SSH-Schlüsselpaar mit PuTTYgen erzeugen 1

Bewegen Sie jetzt die Maus über die freie Fläche unter der Fortschrittsanzeige bis diese 100% anzeigt. Anhand der zufälligen Eingabe durch die Maus wird der Schlüssel erzeugt.

SSH-Schlüsselpaar mit PuTTYgen erzeugen 2

Bevor Sie das Schlüsselpaar abspeichern sollten Sie dieses aus Sicherheitsgründen mit einem Passwort versehen. Um den Schlüssel später auf dem Server identifizieren zu können, wurde hier auch noch ein Kommentar für das Schlüsselpaar angegeben. Anschließend klicken Sie auf die Schaltfläche Save private key und speichern Ihren privaten Schlüssel mit der Dateiendung *.ppk an einem sicheren Ort ab.

SSH-Schlüsselpaar mit PuTTYgen erzeugen 3

Zum Abspeichern des öffentlichen Schlüssels klicken Sie auf Save public key und speichern diesen mit der Dateiendung *.pub ab.

SSH-Schlüsselpaar mit PuTTYgen erzeugen 4

Bevor Sie PuTTYgen schließen sollten Sie sich den öffentlichen Schlüssel noch in die Zwischenablage oder in eine temporäre Textdatei kopieren.

SSH-Schlüsselpaar mit PuTTYgen erzeugen 5

Öffnen Sie jetzt mit PuTTY eine SSH-Verbindung zum Raspberry Pi. Dazu geben Sie nach dem Starten von PuTTY unter Host Name (or IP address) den Domainnamen oder die IP-Adresse Ihres Raspberry Pi's ein. Vergewissern Sie sich auch ob der SSH-Port 22 eingestellt ist und klicken anschließend auf Open.

PuTTY für Schlüssel-Authentifizierung konfigurieren 1

Nachdem Sie die folgende Warnung bestätigt haben, melden Sie sich mit dem Benutzernamen pi und dem dazugehörigen Passwort (bei Raspbian standardmäßig raspberry) am Raspberry Pi an.

PuTTY für Schlüssel-Authentifizierung konfigurieren 2

Öffnen oder erstellen Sie jetzt mit dem folgenden Befehl die Datei ~/.ssh/authorized_keys

pi@raspberrypi ~ $ vi ~/.ssh/authorized_keys

Fügen Sie am Ende dieser Datei den zuvor aus PuTTYgen kopierten öffentlichen Schlüssel ein und speichern die Datei ab.

Sollten Sie die Datei soeben erst erstellt haben, sollten Sie die Zugriffsrechte der Datei noch entsprechend anpassen.

pi@raspberrypi ~ $ chmod 0600 ~/.ssh/authorized_keys

Schließen Sie jetzt mit der Tastenkombination Strg+D die SSH-Session und starten anschließend PuTTY erneut. Bevor Sie sich mit dem Raspberry Pi verbinden, wollen wir jetzt den SSH-Schlüssel einbinden und eine Session abspeichern. Wechseln Sie dazu im linken Bereich zu Connection -> SSH -> Auth und klicken dort auf die Schaltfläche Browse.... Öffnen Sie jetzt die Datei mit Ihrem privaten Schlüssel (*.ppk).

PuTTY für Schlüssel-Authentifizierung konfigurieren 3

Damit Sie den Benutzernamen bei der Anmeldung nicht eingeben müssen, öffnen Sie das Register Connection -> Data und geben bei Auto-login username Ihren Benutzernamen auf dem entfernten Linux-System ein.

PuTTY für Schlüssel-Authentifizierung konfigurieren 4

Kehren Sie jetzt wieder zum Register Session zurück und geben dort den Domainnamen oder die IP-Adresse Ihres Raspberry Pi's ein. Damit Sie die Einstellungen nicht jedes Mal erneut vornehmen müssen, können Sie diese speichern. Geben Sie dazu einen Namen bei Saved Session ein und klicken anschließend auf Save. Von jetzt an können Sie die Einstellungen über dieses Session-Profil laden und anschließend eine SSH-Verbidnung zu Ihrem Raspberry Pi öffnen.

PuTTY für Schlüssel-Authentifizierung konfigurieren 5

SSH-Schlüsselpaar unter Linux erzeugen und auf dem Raspberry Pi einpflegen

Zum Erstellen eines RSA-Schlüsselpaares rufen Sie auf Ihrem lokalen Linux-System (hier Ubuntu 12.04) den folgenden Befehl auf und folgen den Anweisungen. Auch hier sollten Sie aus Sicherheitsgründen ein Passwort für das Schlüsselpaar angeben.

Durch die Option -t legen Sie fest, ob ein RSA- oder ein DSA-Schlüsselpaar erstellt werden soll. Den Pfad und Dateinamen für das Schlüsselpaar können Sie mit -f angeben. Optional können Sie mit der Option -C auch einen Kommentar hinterlegen.

georg@ubuntu1204:~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "georg@ubuntu1204.home.lan"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):StrengGeheim
Enter same passphrase again:StrengGeheim
Your identification has been saved in /home/georg/.ssh/id_rsa.
Your public key has been saved in /home/georg/.ssh/id_rsa.pub.
The key fingerprint is:
48:1e:37:38:7f:dc:5f:82:6f:90:3b:42:bd:f1:eb:6f georg@ubuntu1204.home.lan
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|       .         |
|      = o        |
|     o * o o o   |
|      o S + B . .|
|         o   O o |
|          . + =  |
|           . o .E|
|             .oo.|
+-----------------+

Sollten Sie das DSA-Verfahren verwenden wollen, ändern Sie die Option -t wie folgt ab. Beachten Sie bitte, dass Sie in diesem Fall die Dateinamen bei den folgenden Befehlen anpassen müssen.

georg@ubuntu1204:~$ ssh-keygen -t dsa -f ~/.ssh/id_dsa -C "georg@ubuntu1204.home.lan"

Nachdem Sie die beiden Dateien ~/.ssh/id_rsa und ~/.ssh/id_rsa.pub beziehungsweise ~/.ssh/id_dsa und ~/.ssh/id_dsa.pub generiert haben, kopieren Sie Ihren öffentlichen Schlüssel (~/.ssh/id_rsa.pub beziehungsweise ~/.ssh/id_dsa.pub) mit ssh-copy-id auf den Raspberry Pi. Durch ssh-copy-id wird der öffentliche Schlüssel direkt in die dafür vorgesehene ~/.ssh/authorized_keys eingebunden.

georg@ubuntu1204:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub pi@raspberrypi.home.lan
The authenticity of host 'raspberrypi.home.lan (192.168.10.52)' can't be established.
ECDSA key fingerprint is 00:1d:80:8d:59:77:79:eb:84:2c:05:fc:87:a3:26:82.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'raspberrypi.home.lan,192.168.10.52' (ECDSA) to the list of known hosts.
pi@raspberrypi.home.lan's password:StrengGeheim
Now try logging into the machine, with "ssh 'pi@raspberrypi.home.lan'", and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Anschließend können Sie wie gewohnt eine SSH-Verbindung zum Raspberry Pi aufbauen. Wenn Sie wie empfohlen Ihren privaten Schlüssel mit einem Passwort geschützt haben, sollten Sie jetzt die folgende Aufforderung zur Eingabe des Passwortes erhalten. Wenn Sie kein Passwort festgelegt haben, wird die SSH-Session direkt aufgebaut.

georg@ubuntu1204:~$ ssh pi@raspberrypi.home.lan
Enter passphrase for key '/home/georg/.ssh/id_rsa':StrengGeheim
Linux raspberrypi 3.6.11+ #371 PREEMPT Thu Feb 7 16:31:35 GMT 2013 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Apr 14 09:36:20 2013 from prometheus.home.lan

NOTICE: the software on this Raspberry Pi has not been fully configured. Please run 'sudo raspi-config'

pi@raspberrypi ~ $

Passwort-Authentifizierung am Raspberry Pi deaktivieren

Nachdem Sie jetzt Ihren SSH-Schlüssel auf dem Raspberry Pi hinterlegt und die korrekte Funktion überprüft haben, können Sie den Zugang zum SSH-Daemon nur durch eine Passwort-Athentifizierung deaktivieren. Dazu müssen Sie auf dem Raspberry Pi die Konfigurationsdatei /etc/ssh/sshd_config anpassen. Öffnen Sie diese deshalb mit einem Editor.

pi@raspberrypi ~ $ sudo vi /etc/ssh/sshd_config

Suchen Sie hier nach der Option PasswordAuthentication und ändern die Zeile wie folgt ab. Dadurch kann sich kein Benutzer mehr mit seinem Benutzernamen und Passwort am Raspberry Pi authentifizieren. Nur noch die Authentifizierung über die SSH-Schlüssel ist möglich.

PasswordAuthentication no

Nachdem Sie die Konfigurationsdatei gespeichert haben muss diese vom SSH-Daemon neu eingelesen werden.

pi@raspberrypi ~ $ sudo /etc/init.d/ssh reload


Dieser Eintrag wurde am 14.04.2013 erstellt und zuletzt am 25.09.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_2181.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer