PuTTY SSH Anmeldung mit puttygen Schlüsselpaare
Die SSH Authentifizierung über asymmetrische Schlüssel ist nicht nur sicherer als die Passwortabfrage, auch ermöglicht die Public-Key-Authentifizierung eine automatisierte Anmeldung, beispielsweise bei der Script Ausführung. Bei PuTTY dient der PuTTY Key Generator puttygen.exe zum Erzeugen von RSA-(Standard) oder DSA- und ECDSA Schlüsselpaaren.
- PuTTY Key Schlüsselpaar erzeugen
- Public Key auf Server Speichern
- PuTTY mit Private Key verwenden
- SSH Konfiguration auf Linux Server
Das Tool findet man auf putty.org mit Download PuTTY, hat man den putty-installer.msi gewählt, ist puttygen bereits im Windows-Startmenü unter PuTTY zu finden. Zum Erzeugen eines RSA-Schlüsselpaares genügt ein Klick auf die Schaltfläche Generate. Möchte man DSA- oder ECDSA-Schlüssel erzeugen, kann der gewünschte Algorithmus unten im Parameter Optionsfeld gewählt werden.
PuTTY Key Schlüsselpaar erzeugen
Für die Generierung des Schlüssels wird währenddessen der nötige Zufallsmechanismus erzeugt, indem man im freien Bereich des Dialogfensters die Maus frei bewegt. Anschliessend gibt man bei Key passphrase optional das gewünschte Schlüssel Passwort ein.

Zum Speichern des Private-Key die Schaltfläche Save private key wählen, beim Dialog „ob man sich sicher ist den Key ohne passphrase zu schützen!„, kann man sich entscheiden mit oder ohne Passphrase zu Speichern. Den Public Key speichern ist nicht zwingend erforderlich, weil dieser sich jederzeit aus dem privaten Schlüssel errechnen lässt.
Der Private Schlüssel sollte an einem sicheren Ort aufbewahrt werden, dies gilt vor allem dann, wenn der Private Schlüssel nicht durch eine Passphrase geschützt ist. Ist ein Privat Key einmal abhandengekommen, können unbefugte damit nichts anfangen, wenn dieser durch eine Passphrase geschützt ist. Hingegen ist bei der automatisierten Verarbeitung durch Scripts eine Passphrase nicht erwünscht.
Der Dateiname und der Pfad beim Speichern ist frei wählbar, es hat sich aber für PuTTY-Schlüssel die Endung .ppk verbreitet, da es den Hinweis auf das vom Linux abweichende Format gibt. PuTTY akzeptiert OpenSSH-Keys nicht, im Menü Conversions ist es jedoch möglich, vorhandene OpenSSH-Keys zu importieren, und auch PuTTY-Keys zu exportieren.
Public Key auf Server Speichern
Der Public Key ist öffentlich und soll auf dem Server publiziert werden, diesen mit der Maus im Feld Key vollständig markieren und mit Ctrl+C in die Zwischenablage kopieren.

Nun loggt man sich mit PuTTY noch einmal mit Benutzername und Passwort auf dem entfernten Linux Server ein, öffnet die Datei ~/.ssh/authorized_keys
mit einem Editor der Wahl und fügt den Public Key aus der Zwischenablage ein.
Es darf am Schlüssel nichts verändert werden, einfach nur copy & paste. Es können in der Datei authorized_keys
mehrere Schlüssel nacheinander stehen, ohne Leerzeichen oder Zeilen dazwischen.
PuTTY mit Private Key verwenden
Um beim nächsten Login die Public-Key-Authentifizierung zu verwenden, beginnt man beim öffnen von PuTTY gleich bei Basic options for your PuTTY session im Bereich Session, und gibt die IP-Adresse oder der Host Name ein, bei Saved Sessions trägt man den gewünschten Name ein und klickt auf Save, zuvor aber noch im Bereich Category unter Connection auf + SSH klicken, bei Auth im Feld Private key file for authentication den Dateinamen des Private Keys eintragen. Das geht am einfachsten, indem man auf Browse klickt und die entsprechende Datei im Dateiauswahl Fenster auswählt.

Die Anmeldedaten für jede einzelne Verbindung kann als Session gespeichert werden. Wird nun eine Verbindung zum Linux Server aufgebaut, verlangt dieser nach der Identität, so dass der angegebene Benutzername einen in der Datei authorized_keys
angegebenen öffentlichen Schlüssel besitzen muss, dieser zum Privaten Schlüssel passt.
Es wird zur Eingabe der Passphrase aufgefordert (falls eingetragen), um den in der lokalen Datei .ppk
gespeicherten privaten Schlüssels zu aktivieren. Sind beide Schlüssel identisch, wird der Zugang gestattet.
SSH Konfiguration auf Linux Server
Auf dem Linux Server muss die SSH Server Konfiguration für SSH Authentifizierung über asymmetrische Schlüssel aktiviert sein, bei den meisten Linux Distributionen ist standardmässig die Public-Key-Authentifizierung aktiviert in /etc/ssh/sshd_config
.
#PubkeyAuthentication yes
#RSAAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
OpenSSH: Ein führendes Hash (#) Zeichen bedeutet, das es sich um den Default Wert handelt, soll der Wert geändert werden, wird # entfernt und der Parameter entsprechend modifiziert.
Die Benutzer verwalten ihre Public Keys unter $home in ~/.ssh/authorized_keys
nach dem erstellen mit adduser
ist das Verzeichnis .ssh
meist nicht vorhanden, es wird in diesem Fall als root für den User Fritz wie folgt erstellt.
$ cd /home/fritz
$ mkdir .ssh
$ chown fritz:fritz .ssh
$ chmod 700 .ssh
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
Das Verzeichnis .ssh ist für andere Benutzer nicht einsehbar.
Da ich Putty hauptsächlich für SSH mit Linux Servern verwende, ist es natürlich Configurationstechnisch jetzt für mich einfacher, da es ja ein OpenSSH Fork ist. Gerade bei meinem ersten Einsatz mit Putty hatte ich so meine Probleme mit Remote character set komplett ist und Codepage translation. Das war mit SSH in WT eine Brise. Wie das mit anderen oder älteren *ix aussieht steht auf einem anderen Blatt. Putty kommt bei mir auch nicht weg.
Hab jetzt alle meine Server Configs migriert. Mal sehen was für Überraschungen auf mich zukommen. :-)
Hallo Frank, das ist bei uns nicht anders, die Kollegen nutzen hauptsächlich PuTTY, ich meist den PuTTY Clone „KiTTY“, nutze aber auch Windows OpenSSH mit WT, auch um die fortschritte zu verfolgen, gerade festgestellt das die Zeichen Übersetzung besser geworden ist, vermutlich mit 21H1.
Und ich habe festgestellt, das sie auf Windows selber z.B PowerShell ohne die Einstellung in Region – Administrative – Language for non-Unicode programs – Change system locale… – BETA: Use Unicode UTF-8 for worldwide support nicht automatisch ist. :-(
Hatte da das Problem das ssh-add die Umlaute des Key Kommantars verhauen hat.
Umlaute sind fast immer schuld :) und beim ssh privat key ist die Toleranz vollends vorbei.
Gibt es noch einen Grund Putty zu verwenden, wenn man den von OpenSSH abstammenden Windows SSH (und Tools) zusammen mit dem Windows Terminal verwenden kann? (Mit Windows 11 ist es dann ja integriert.)
P.S.: Danke für die coole Site :-)
Wenn das remote character set komplett ist und auch die codepage translation geht, ja dann wäre Windows OpenSSH mit Windows Terminal nutzbar etwa wie PuTTY oder KiTTY, auch Git-bash für Windows kann eine alternative sein, das praktische an PuTTY & Co ist, das sich die Sessions mit den individuellen Einstellungen speichern lassen, in Windows Terminal und OpenSSH ist das mit den wichtigsten Optionen schon auch machbar, wenn auch ungleich aufwendiger.