SSH Anmeldung ohne Passwort

11. Dezember 2008

Ihr Anliegen

Sie möchten unter Linux Aufgaben automatisieren und brauchen daher als von Rechner A als Benutzer a einen SSH-Login auf B als b ohne Passwort. Trotzdem soll die Verbindung abgesichert sein.

Das Prinzip

Verwenden Sie SSH mit öffentlichen Schlüsseln (Public Key). Anstelle von Passworten verwendet SSH dann ein Paar aus privatem und öffentlichem Schlüssel für die Anmeldung.

Das Vorgehen

Erzeugen Sie zunächst auf Rechner A als Benutzer a ein Schlüsselpaar. Achten Sie darauf, dass dieses ohne Passphrase gespeichert wird (einfach zweimal Return drücken):

a@A> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/a/.ssh/id_rsa): 
Created directory '/home/a/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/a/.ssh/id_rsa.
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

Nun melden Sie sich (diesmal noch mit Passwort) auf Rechner B als Benutzer b an. Erzeugen Sie dort das Verzeichnis .ssh im Homeverzeichnis von b (wenn es das schon gibt, ist es auch gut):

b@B> mkdir -p ~/.ssh

Im dritten und letzten Schritt muss b@B einen Zugriff mit dem anfangs erzeugten Schlüssel erlauben. Das geht am sichersten von A aus mit folgendem Befehl (wobei Sie ein letztes Mal das Passwort eingeben müssen):

a@A> cat ~/.ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'

Dabei wird der öffentliche Teil des Schlüsselpaares beim Benutzer b an die Textdatei .ssh/authorized_keys angehängt. In dieser Datei können auch mehrere Schlüssel erlaubt werden - einer pro Zeile.

Wenn Sie alles richtig gemacht haben, muss jetzt ein Einloggen ohne Passwort möglich sein. Sie können das z.B. so prüfen:

a@A> ssh b@B hostname
B

Auch ein Kopieren von Dateien mit scp funktioniert ohne Passworteingabe.

Hinweise für anderen SSH-Versionen

In Abhängigkeit von Ihrer Version von SSH kann es sein, dass Sie noch folgendes beachten müssen:

  • Die Berechtigungsdatei heißt eventuell authorized_keys2.
  • Die Rechte von .ssh müssen eventuell 700 sein (chmod 700 .ssh).
  • Die Rechte von .ssh/authorized_keys2 müssen eventuell 640 sein.

Sicherheitshinweis

Bei dem hier beschriebenen Verfahren liegt der Schlüssel auf Rechner A unverschlüsselt vor. Ein Angreifer, der Zugriff auf A als Benutzer a erlangt, hat damit automatisch Zugriff auf Rechner B als Benutzer b.