Sicher senden
Zu Befehl: ssh, scp
Der eigene Schlüssel
Wollen Sie nicht nur gelegentlich sondern häufig Dateien zwischen Rechnern übertragen oder sich auf einem anderen System anmelden, so kann die ständige Passwortabfrage des Zielsystems störend sein; auch eine Automatisierung von Standardaufgaben über Skripte scheitert am interaktiven Element der Passworteingabe. 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. Das Programm ssh-keygen erzeugt einen solchen Schlüssel (englisch: "key generation").
Für Protokollversion 1.X sind dies RSA-Schlüssel, Version 2.X verwendet stattdessen DSA-Verschlüsselung. Welcher Schlüssel erzeugt werden soll, verraten Sie dem Programm mit der Option -t. Listing 1 zeigt, wie Sie einen DSA-Schlüssel generieren.
Listing 1
DSA-Schlüssel anlegen
huhn@asteroid:~$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/huhn/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/huhn/.ssh/id_dsa. Your public key has been saved in /home/huhn/.ssh/id_dsa.pub. The key fingerprint is: 72:d5:ad:76:cf:e4:89:a0:8e:f9:57:66:87:55:cd:cc 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 das Notebook gestohlen werden und sich auf diesem ein ungeschützter SSH-Key befinden, so kann dieser zum Einbruch in ein anderes System verwendet werden.
In Ihrem Home-Verzeichnis befindet sich nun ein neues Unterverzeichnis .ssh (mit führendem Punkt), das u. a. das bereits erwähnte Schlüsselpaar, bestehend aus id_dsa und id_dsa.pub enthält. Die 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/id_dsa.pub ins Home-Verzeichnis des Zielrechners: scp ~/.ssh/id_dsa.pub [UserID@]RemoteHost:
- 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 (cd ~/.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 ~/id_dsa.pub >> authorized_keys (Sollte die Datei noch nicht vorhanden sein, wird sie von diesem Aufruf erzeugt.)
- Löschen Sie schließlich die nun nicht weiter benötigte Datei id_dsa.pub im Hauptverzeichnis (nur da!): rm ~/id_dsa.pub
Auf dem Zielrechner müssen die Rechte des .ssh-Verzeichnisses korrekt gesetzt sein: 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
huhn@asteroid:~$ chmod go-w ~ huhn@asteroid:~$ chmod 700 ~/.ssh
aus. Um das Abfragen der für den Schlüssel gesetzten Passphrase zu automatisieren, gibt es die Programm ssh-agent und ssh-add. Der SSH-Agent merkt sich einmal (über ssh-add) eingegebene Passphrases, so dass bei Aufrufen von ssh keine Fragen mehr gestellt werden. Das ist vor allem dann nützlich, wenn Sie häufig die SSH-Verbindung abbrechen und wieder neu aufbauen.
In einem ersten Schritt muss der SSH-Agent gestartet werden. Er gibt als Rückgabewert eine Reihe von Befehlszeilen, die dann kopiert und ebenfalls ausgeführt werden müssen: Damit werden einige Umgebungsvariablen gesetzt.
huhn@asteroid:~$ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-XXO0M4II/agent.32162; export SSH_AUTH_SOCK; SSH_AGENT_PID=32163; export SSH_AGENT_PID; echo Agent pid 32163;
Diese Prozedur, ssh-agent die Befehlszeilen ausgeben zu lassen, dient hier aber nur dem Verständnis; im praktischen Einsatz können Sie die Ausgabe von ssh-agent einfach durch eval auswerten lassen, so dass sich die Vorgehensweise auf ein einfaches
eval `ssh-agent`
verkürzt. Erst wenn der Agent läuft, kann auch ssh-add verwendet werden.
huhn@asteroid:~$ ssh-add -l The agent has no identities.
Beim Aufruf ohne Parameter sucht es im Verzeichnis ~/.ssh nach privaten Schlüsseln und fordert Sie für jeden gefundenen auf, die zugehörige Passphrase einzugeben.
huhn@asteroid:~$ ssh-add Enter passphrase for /home/huhn/.ssh/id_dsa: @L: *@L: *@L: *@L: *@L: * Identity added: /home/huhn/.ssh/id_dsa (/home/huhn/.ssh/id_dsa)
Danach kennt das Programm die Passphrase:
huhn@asteroid:~$ ssh-add -l 1024 f3:c9:b6:5d:23:3a:9d:61:50:19:63:3c:e8:22:7c:86 /home/huhn/.ssh/id_dsa (DSA)
Ab sofort können Sie (aus der laufenden Shell und allen weiteren Shells, in denen Sie die Variablen SSH_AUTH_SOCK und SSH_AGENT_PID richtig gesetzt haben) sich ohne Passworteingabe auf den Zielrechnern anmelden.
Glossar
DISPLAY
Diese Umgebungsvariable legt fest, auf welchem X-Display X-Window-Programme angezeigt werden sollen. Meist ist sie auf ":0" gesetzt, so dass der lokal laufende (erste) X-Server angesprochen wird. Bei einem SSH-Login mit X-Forwarding von rechner1 auf rechner2 wird die Variable auf einen Eintrag der Form "rechner1:10.0" gesetzt.
RSA
Ein Verschlüsselungsalgorithmus, benannt nach seinen Erfindern Rivest, Shamir und Adleman. Er wurde 1977 entwickelt.
DSA
OpenSSH benutzt den "Digital Signature Algorithm" als Verschlüsselungsalgorithmus. Er wurde 1994 vom National Institute of Standards and Technology (NIST) veröffentlicht.



