Putty ohne Passwortabfrage - Private und Public SSH-Keys für Windows
Wer mit Windows arbeitet und SSH-Zugriffe durchführt, nutzt in der Regel das Programm Putty, welches wir bereits in diesem Artikel erläutert haben. Bei der täglichen Arbeit kann es auf Dauer aber nervig sein, wenn man immer wieder sein Benutzerkennwort eingeben muss. Abhilfe schaffen hier SSH-Keys, die auf dem Server und Client eingerichtet werden und welche die Authentifizierung übernehmen. Passen Public-Key auf dem Server und der Private-Key auf dem Client zusammen, muss kein Passwort mehr eingegeben werden.
Was unter Linux kinderleicht ist, ist mit Putty unter Windows etwas schwieriger. Zusätzlich werden die Putty-Tools PuTTY Keygen für die Erstellung der SSH-Keys und Pagent benötigt. Letzteres Tool verwaltet die SSH-Keys, welches von Putty während der Authentifizierung genutzt wird.
Die Darstellung zeigt den typischen Anwendungsfall, wie eine passwortlose SSH-Verbindung aufgebaut wird. Auf einem Windows-PC loggt sich ein Anwender mit dem Benutzerkonto peter an. Peter möchte sich nun auf seinen Linuxserver per SSH verbinden. Da es sich hier um zwei unterschiedliche Systeme mit eigener Benutzerverwaltung handelt, sind auch die Benutzerkonten unterschiedlich. In diesem Fall heißt der Benutzer auf dem Linuxserver admin. Bei der SSH-Verbindung muss also explizit der Benutzer admin angegeben werden.
Peter startet also Putty und verbindet sich mit ssh admin@linuxserver (siehe 1). Putty wiederum fragt sein kleines Helferprogramm pagent nach vorhandenen privaten SSH-Keys (siehe 2) und startet hiermit die Verbindung zum Linuxserver. Auf dem Linuxserver wird im Home-Verzeichnis des Benutzers admin die Datei .ssh/authorized_keys analysiert. Gibt es dort einen passenden Public Key zum Privaten Key, ist die Authentifizierung erfolgreich.
Hört sich einfach an, wir erklären nun, wie es konkret eingerichtet wird.
1. Mit Putty Key Generator Private und Public SSH-Key erzeugen
Für eine SSH-Verbindung ohne Passworteingabe benötigen wir einen privaten und öffentlichen Schlüssel. Der öffentliche Schlüssel wird auf dem Zielsystem (Server) in die Datei authorized_keys gespeichert. Der private Schlüssel wird vom Client (putty) bei der Anmeldung genutzt.
Public vs. Private Key
Das Prinzip der SSH-Key-Verschlüsselung ist, dass aus dem Private Key der Public Key errechnet werden kann. Umgekehrt ist dies aber nicht möglich. Somit kann nur der Besitzer des Private Keys die Authentifizierung erfolgreich absolvieren.
Wir starten nun das Progrann Putty Key Generator und wählen als Verschlüsselung RSA 2 mit mindestens 2048 Bit aus.
Nach dem Klick auf Generate muss man mit der Maus über die freie Fläche bewegen, um zufällig generierte SSH-Keys zu erzeugen:
Nach Erzeugung der SSH-Keys zeigt uns Putty Key Generator den öffentlichen Schlüssel an. Der Hinweis "Public key for pasting into Open SSH authorized_keys file:" zeigt noch mal ausdrücklich, dass dieser Inhalt auf den Server in die Datei /home/admin/.ssh/authorized_keys kopiert werden soll.
Hinweis:
Die Funktion Save Public Key erzeugt eine Textdatei mit dem öffentlichen Schlüssel. Dieser dient als Backup bzw. zur Einbindung als Textdatei auf dem Server. Auf gar keinen Fall darf man den Inhalt in authorized_keys kopieren, da hier das Format ein anderes ist.
Anschließend speichert man den Public und Private Key.
Private Keys werden unter Putty mit der Dateiendung ppk gespeichert. ppk steht für Putty Private Key:
Der Zwischenstand ist wie folgt:
- Public und Private Key sind erzeugt
- Der Public Key wurde auf dem Server in authorized_keys gespeichert
- Der Private Key liegt als ppk-Datei auf dem Client
2. pagent - Verwaltung der private Keys
Pagent ist ein kleines Tool, welches die privaten Schlüssel verwaltet. Ein Klick auf "Add Key" und die Auswahl der PPK-Datei fügt den privaten SSH-Key zu pagent hinzu. Auf dem Client ist die Vorbereitung abgeschlossen.
Wie bereits angesprochen muss auf dem Linuxserver der öffentliche Schlüssel vorhanden sein:
3. Putty Verbindung starten
Wie gewohnt fügt man als Hostnamen den Zielrechner an. In diesem Beispiel loggen wir uns als admin auf dem Linuxserver (admin@linuxserver) ein. Das war es auch schon: keine zusätzliche Konfiguration, keine Einbindung der PPK-Datei o.ä. Pagent übernimmt die Verwaltung und Putty fragt automatisch bei Pagent nach.
Und so sieht die erfolgreiche Authentifizierung aus: "Authenticating with public key..."
Abschließend sei erwähnt, dass die passwortlose Authentifizierung ein Sicherheitsrisiko darstellt. Daher wird eine Passphrase für den private key empfohlen.