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 andere 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 eventuell700
sein (chmod 700 .ssh
). - Die Rechte von
.ssh/authorized_keys2
müssen eventuell640
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.