SSH Login mit PuTTY Key Authentifizierung

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.

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 Strg + 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.

  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 Max wie folgt erstellt.

  Das Verzeichnis .ssh ist für andere Benutzer nicht einsehbar.

6 Gedanken zu „SSH Login mit PuTTY Key Authentifizierung“

  1. 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. 🙂

    1. 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.

      1. 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.

  2. 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 🙂

    1. 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.