Im Normalfall wird man sich an einem SSH-Server mit seinem Benutzernamen und Passwort authentifizieren. Wenn man aber das Passwort nicht immer eintippen möchte, z.B. weil man CVS über SSH benutzt, oder sich oft anmelden muss, dann kann es Sinn machen die Public-Key Anmeldung einzurichten.
Dazu benötigt man zuerst ein Public/Private-Key Pair und, unter Windows, PuTTy mit PuTTy Agent und PuTTyGen.
Linux
Unter Linux ist das erzeugen das Schlüsselpaares ganz einfach:
ssh-keygen -t rsa
Dann liegt der öffentliche Schlüssel unter ~/.ssh/id_rsa.pub. Diese kopiert man dann mit scp auf die Maschine an der man sich ohne Passwort anmelden möchte:
scp ~/.ssh/id_rsa.pub user@host.domain.tld:~/id_rsa.pub
Nun muss man sich noch einmal mit seinem Passwort an diese Maschine anmelden und dann dort folgenden Befehl ausführen:
cat id_rsa.pub >> ~/.ssh/authorized_keys
Fertig. Aber jetzt sollte man sich auch ohne sein Passwort eingeben zu müssen an dem Rechner anmelden können.
Windows
Unter Windows ist das Vorgehen ein kleines bischen komplizierter, aber nicht minder effektiv.
Zunächst einmal muss man sich PuTTy besorgen. Das komplette Archiv mit allen Hilfsprogrammen und dieses irgendwo entpacken.
Danach geht es wie folgt weiter:
- “PuttyGen” starten.

- Im Bereich “Parameters” “SSH-2 RSA” auswählen.
- Im Bereich “Actions” auf “Generate” klicken.
- Die Maus über den leeren Bereich bewegen bis der Balken voll ist. Damit sammelt der Schlüsselgenerator zusätzliche Zufallsdaten.
- Auf Wunsch noch einen Kommentar zu dem Schlüssel in das Feld “Key comment” eintragen.
- Unter “Key passphrase” und “Confirm passphrase” ein Passwort eintragen mit dem der Schlüssel geschützt wird. Dieses muss beim ersten Zugriff auf den Schlüssel eingegeben werden.
- Mit “Save private Key” den privaten Schüssel abspeichern, und an einem sicher Ort aufbewahren. Wichtig ist es, ihn nie weiterzugeben!
- Mit “Save public Key” den öffentlischen Schlüssel an einem beliebigen Ort speichern. Dieses Schlüssel kann man an jeden weitergeben oder sogar auf die eigene Webseite stellen.
- Bevor man PuTTyGen beendet den öffentlichen Schlüssel aus dem Textfeld kopieren (Zwischenablage).
- Per PuTTy ganz normal auf dem entfernten Rechner einloggen und die Datei ~/.ssh/authorized_keys bearbeiten. Dort einfach in eine neue Zeile den öffentlichen Schlüssel aus der Zwischenablage einfügen. Abspeichern und wieder vom entfernten System abmelden.
- Jetzt muss man den Schüssel noch in den PuTTy Agent importieren. Dazu startet man “Pageant” und klickt doppelt auf das Icon mit dem Hut in der Kommandozeile.
- Dort klickt man auf “Add Key” und wählt den eben gespeicherten Private-Key aus. Nachdem man noch einmal das Passwort des Private-Key eingegeben hat sollte man sich ohne weiter Passwort-Eingaben zum Server verbinden können.
Erst mal vielen Dank für die Anleitung. Die Einrichtung von einem Windows-System aus ist nicht ohne Stolperfallen. Ich habe noch keine Anleitung gefunden, die es idiotensicher erklärt hat. Deine Anleitung gehört auf jeden Fall zu den besseren Anleitungen, kann aber auch noch ergänzt werden. So funktioniert das Hinüberkopieren des Public-Keys (bei mir zumindest) nicht direkt über die Zwischenablage. Man kann aber die Zeichenfolge zunächst in eine Textdatei kopieren, die möglichst das Unix-Format hat (ich habe Notepad++ verwendet, unter Format kann man zu Unix wechseln). Diese Datei transferiert man nun zum fernen Linux-Rechner (bei mir Debian Etch, virtueller Server bei Strato). Transfer über FTP, FTPS, etc. Diese Datei muss nun – wie von dir beschrieben – in das Homeverzeichnis ~/.ssh (/root/.ssh beim root) unter dem Namen authorized_keys abgelegt werden und sie muss den User als Eigentümer haben. Gerade bei einem Transfer über FTP und anschließenden Hinüberkopieren in das richtige Verzeichnis stimmen die Eigentümerverhältnisse oft nicht. Deshalb kann ein
chown root:root authorized_keysnoch nötig sein. Zur Kontrolle kann man sich mitcat authorized_keysdie Datei anzeigen lassen. Der Public-Key-Code sollte keine Zeilenumbrüche aufweisen (eine weitere Stolperfalle) !Danke für die Ergänzung, aber ich möchte noch erwähnen, dass man einen direkten root-Login von außen besser abschaltet und erst nach der Anmeldung als “normaler” Benutzer am System per su root wird bzw. sudo benutzt.
Da hast du natürlich recht!