Auf der sicheren Seite – ssh und scp
Zu Befehl
Ohne Passwort anmelden
Wollen Sie nicht nur gelegentlich sondern häufig Dateien zwischen Rechnern übertragen oder sich auf einem anderen System anmelden, so kann die ständige Passwort-Abfrage des Zielsystems störend sein; auch eine Automatisierung von Standardaufgaben über Skripte scheitert am interaktiven Element der Passwort-Eingabe. Hier bietet ssh die Möglichkeit, einen Schlüssel auf dem Zielsystem zu hinterlegen, über den Ihre Berechtigung zum Login nachgeprüft werden kann, ohne ein Passwort zu verlangen. Ein solcher Schlüssel, englisch: Key, ist mit dem Programm ssh-keygen zu erzeugen. Das Programm wird einfach ohne Parameter aufgerufen:
huhn@asteroid:~$ ssh-keygen Generating RSA keys: ………………………………………oooooO……………oooooO Key generation complete. Enter file in which to save the key (/home/huhn/.ssh/identity): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/huhn/.ssh/identity. Your public key has been saved in /home/huhn/.ssh/identity.pub. The key fingerprint is: 1024 f7:a8:6f:6e:1a:e9:6c:3c:43:a8:a2:82:c4:cb:d4:08 huhn@asteroid
Die "Passphrase", nach der hier zwei mal gefragt wird, hat nichts mit dem Passwort auf dem Zielsystem oder Ihrem lokalen Passwort zu tun – vielmehr können Sie mit Hilfe der Passphrase Ihr Schlüsselpaar (bestehend aus einem öffentlichen und einem geheimen Schlüssel, dazu gleich mehr) schützen. Ein solcher Schutz ist z. B. beim Einsatz von ssh auf einem Notebook sinnvoll, denn sollte Ihr Notebook gestohlen werden und sich auf diesem ein ungeschützter ssh-Key befinden, so kann dieser zum Einbruch in ein anderes System verwendet werden. Auf stationären Rechnern, die Sie vor dem Zugriff anderer sicher wähnen, kann darauf aber verzichtet werden.
In Ihrem Home-Verzeichnis befindet sich nun ein neues Unterverzeichnis .ssh (mit führendem Punkt), das u. a. das bereits erwähnte Schlüssel-Paar, bestehend aus identity und identity.pub enthält. Erste Datei ist Ihr geheimer, privater Schlüssel (eine binäre Datei, die sich nicht im Editor lesen lässt); die zweite Datei mit der Endung ".pub" ist der öffentliche (public) Schlüssel. Dieser kann nun auf einen Zielrechner kopiert werden, um künftig eine automatische Anmeldung auf diesem System zu ermöglichen. Das geht folgendermaßen:
- Kopieren Sie (z. B. mit scp) die Datei ~/.ssh/identity.pub ins Home-Verzeichnis des Zielrechners.
- Loggen Sie sich dann auf dem Zielrechner ein. Prüfen Sie, ob dort bereits ein Unterverzeichnis .ssh existiert; wenn nicht, legen Sie es an (mkdir ~/.ssh).
- Wechseln Sie (auf dem Zielrechner) in das Verzeichnis .ssh und hängen Sie die vom ersten Rechner kopierte Datei an die (eventuell bereits vorhandene) Datei authorized_keys an; das geht mit dem Befehl cat ~/identity.pub >> authorized_keys. (Sollte die Datei noch nicht vorhanden gewesen sein, wird sie von diesem Aufruf erzeugt.)
- Löschen Sie schließlich die nun nicht weiter benötigte Datei identity.pub im Hauptverzeichnis (nur da!). Testen Sie nun, ob eine Anmeldung ohne Passwort-Abfrage möglich ist. Sollte dies nicht gelingen, sind eventuell die Rechte des .ssh-Verzeichnisses auf dem Zielrechner falsch gesetzt: Das Verzeichnis selbst muss mit den Rechten 700 ausgestattet sein (also lesbar, schreibbar, betretbar durch den Besitzer und niemand sonst). Darüber hinaus dürfen für das Home-Verzeichnis keine Schreibrechte für Gruppe (g) und Andere (o) gesetzt sein; führen Sie im Zweifelsfall die Befehle
chmod go-w ~ chmod 700 ~/.ssh
aus. Um übrigens auch eine Verbindung in die andere Richtung zu ermöglichen (also verteilte Rollen von Client und Server), ist die Prozedur aus Schlüsselgenerierung und Einfügen in die authorized_keys erneut durchzuführen, nun eben umgekehrt.



