Gesicherte Authentifizierung ohne Passwort

Manchmal ist es wirklich lästig bei jeder neuen SSH-Sitzung das Passwort für die Authentifizierung eingeben zu müssen. Mit Hilfe einer Public-Private-Key Infrastruktur kann man diesem "Problem" entgegenwirken, ohne jedoch Einbußen in Bezug auf die Sicherheit nehmen zu müssen.

Diese Lösung ist potentiell unsicher, da der Schlüssel nicht mehr durch eine Passphrase geschützt wird. In einem anderen Tutorial werde ich beschreiben, wie man eine elegantere Lösung mit Hilfe von ssh-agent und ssh-add umsetzt.

Zu allererst müssen wir auf unserem Clientsystem ein Schlüsselpaar erzeugen. Für diesen Zweck ist in der SSH-Suite ein entsprechendes Programm names "ssh-keygen" zu finden. Um einen Schlüssel zu erzeugen geben wir in der Konsole folgendes Kommando ein.

ssh-keygen -t rsa -b 2048

Die übergeben Parameter bewirken, dass ssh-keygen einen RSA-Schlüsselpaar mit der Stärke von 2048 Bit erstellt. Diese Verschlüsselungsstärke sollte vollkommen ausreichen. Für die Paranoiden unter uns sei an dieser Stelle gesagt, dass man auch eine Verschlüsselungsstärke von 4096 Bit einstellen kann.

ssh-keygen unterstützt zwei verschiedene Verschlüsselungsverfahren. RSA und DSA. Da RSA bis vor kurzem noch patentiert war, wurde das freie DSA Verfahren entwickelt. Der Nachteil von DSA gegenüber RSA ist, dass es eine feste Verschlüsselungsstärke von 1024 Bit hat. RSA hingegeben ist in dieser Hinsicht flexibel.

Nachdem das Kommando abgeschickt worden ist, wird man aufgefordert, verschiedene Angaben zur Erstellung des Schlüsselpaares zu machen.

Beim ersten Schritt müssen wir dem Programm mitteilen, wo der private Schlüssel hinterlegt werden soll. Standard ist hier das .ssh Verzeichnis im Heimatverzeichnes des Benutzs.

user@hostA:~$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.

Enter file in which to save the key (/home/user/.ssh/id_rsa):

Anschließend werden wir aufgefordert, eine Passphrase für den Schlüssel einzugeben. Diese Passphrase wird bei jeder Benutzung des Schlüssels abegraft. Da wir aber eine Authentifizierung ohne Passworteingabe anstreben, lassen wir das Passwort einfach leer und bestätigen mit der Entertaste. Genauso verfahren wir natürlich bei der Wiederholung des Passwortes.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Anschließend wird noch ein wenig Output generiert. Wir werden darüber informiert, wo die Schlüsseldateien abgelegt worden sind und wie unser Fingerprint lautet.

Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.

The key fingerprint is:
DE:AD:BE:EF:12:34:56:78:90:DE:AD:BE:EF:12:34:56 user@hostA

Nun haben wir den ersten großen Schritt hinter uns gebracht. Jetzt müssen wir unseren Public-Key nur noch auf der Maschine hinterlegen, zu der wir uns ohne Passworteingabe verbinden wollen. Dies geschieht mit Hilfe der "authorized_keys" Datei, die in ~/.ssh zu finden ist. Um unseren Key nun in dieser Datei einzutragen, nutzen wir folgendes Kommando.

ssh-copy-id -i ~/.ssh/id_rsa.pub hostB

Nachdem auch dieser Schritt getan ist, kann man sich anschließ ohne die lästige Passworteingabe auf dem entfernten Computersystem einloggen.