Dieser Artikel wurde von tuxorials.de (Dokuwiki) hierher migriert! Mögliche Darstellungsfehler bitte ich zu entschuldigen.

Wenn Sie sich oft per SSH auf einen entfernten Host anmelden, haben Sie vielleicht das Bedürfnis die Passwortabfrage beim Verbinden zu umgehen. Dieser Artikel beschreibt den Vorgang der Authentifizierung mit Hilfe eines Public Key, was keine Passworteingabe erfordert.

Ich gehe davon aus, dass auf Ihrem Host die ssh-Pakete vorhanden sind. Wenn nicht installieren Sie sie bitte nach. Der erste Schritt zum passwortfreien Zugriff ist die Erzeugung eines Schlüsselpaars, wobei der sogenannte Private Key (privater Schlüssel) schützenswert ist und auch nicht aus der Hand gegeben werden sollte. Das Pendant dazu ist der Public Key (öffentlicher Schlüssel), welcher auf den entfernten Host übertragen und in eine spezielle Datei geschrieben werden muss. Diese beiden Schlüssel stehen in einer mathematischen Beziehung, denn der Public Key kann aus dem Private Key berechnet werden und zum Authentifizieren werden beide Schlüssel herbeigezogen.

Schlüsselpaar erstellen

Zum Erstellen des Schlüsselpaars wird der Befehl ssh-keygen genutzt, welcher nach einer Passphrase verlangt. Jetzt muss man sich entscheiden, mit einer Passphrase ist das Schlüsselpaar gesichert, jedoch muss diese Passphrase bei der Benutzung des Schlüsselpaars erst eingegeben werden. Im ersten Moment mindert das den Komfort, jedoch haben die Desktopsysteme wie Gnome oder KDE Mechanismen entwickelt, die das Schlüsselpaar automatisch aktivieren können. In einer nativen Textkonsole ist man denn aber doch zur Eingabe gezwungen.

Wenn man eine leere Eingabe tätigt, wird keine Passphrase gesetzt. Die Keys werden standardmäßig im Verzeichnis ~/.ssh gespeichert. Die Datei id_rsa beinhaltet den privaten Schlüssel und dementsprechend sollte diese Datei geschützt werden, was schon mit dem Setzen der Zugriffsrechte beginnt (chmod 0600 id_rsa). Wie nicht anders zu erwarten liegt dann in der Datei id_rsa.pub der öffentliche Schlüssel, welcher auf die entfernten Rechner übertragen werden muss.

user@host:~$ ssh-keygen  
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/username/.ssh/id_rsa):  
Created directory /home/username/.ssh. 
Enter passphrase (empty for no passphrase):  
Enter same passphrase again:  
Your identification has been saved in /home/username/.ssh/id_rsa. 
Your public key has been saved in /home/username/.ssh/id_rsa.pub. 
The key fingerprint is: 3e:72:b5:e5:0c:ec:9e:69:2d:bd:46:6f:90:af:2c:02 username@host 
The keys randomart image is: .....

Einrichtung der Authentifizierung

Nun muss der PublicKey auf den entfernten Rechner übertragen werden, was am sichersten per scp geschieht. Der nachfolgende Befehl kopiert den Public Key auf den Host testhost.example.org in das Verzeichnis /home/otheruser:

you@host :~$ scp .ssh/id_rsa.pub otheruser@testhost.example.org:/home/otheruser

Nach der Eingabe des Passworts wird die Datei übertragen und Sie müssen sich jetzt direkt per ssh am entfernten Host anmelden, was mit folgendem Befehl geschieht:

you@host :~$ ssh otheruser@testhost.example.org

Ebenfalls nach der Eingabe des Passworts sind Sie auf dem entfernten Host angemeldet und müssen nachfolgend das Hinzufügen des Schlüssels bewerkstelligen. Legen Sie in .ssh eine Datei namens authorized_keys an (Wenn nötig muss .ssh erstellt werden) und wechseln Sie die Zugriffsrechte der Datei auf 0600. Hängen Sie nachfolgend den PublicKey an diese Datei an. Die nachfolgenden Befehle tun genau das:

otheruser@otherhost :~$ mkdir .ssh
otheruser@otherhost :~$ touch .ssh/authorized_keys
otheruser@otherhost :~$ chmod 0600 .ssh/authorized_keys
otheruser@otherhost :~$ cat id_rsa.pub >> .ssh/authorized_keys 
otheruser@otherhost :~$ rm id_rsa.pub

Wenn Sie sich jetzt erneut per ssh mit dem Nutzer otheruser am Host testhost.example.org anmelden, müssten Sie ohne Passworteingabe Zugriff erlangen. Falls Sie dennoch nach einem Passwort gefragt werden, sollten Sie den ssh-Dienst auf testhost neustarten und in die entsprechenden Log-Dateien (/var/log/messages, /var/log/secure, /var/log/syslog) schauen. Meistens sind es falsch gesetzte Zugriffsrechte die den Vorgang dann fehlschlagen lassen, was aber aus den Log-Dateien ersichtlich ist.

Achtung: In der hier vorgestellten Konfiguration ist der Login nutzerspezifisch, was bedeutet, dass man sich nur als der Nutzer anmelden kann, bei dem auch der Public Key hinterlegt ist. Notfalls muss der Public Key weiteren Nutzer zugänglich gemacht werden.