ssh - Schlüsselpaar mit Putty unter Windows erzeugen und verwenden

Das ssh-Protokoll wird verwendet, um eine sichere, verschlüsselte Verbindung zwischen einem Client und einem Server zu betreiben. In den Laboren des Departments Informatik verwenden wir ssh u.a. für die Kommunikation zwischen:

einer Entwicklungsumgebung (z.B. IntelliJ IDEA) und gitlab

WinSCP und usershell (z.B. pub-Verzeichnis der Professor:Innen)

login von einer lokalen (Linux)konsole auf eine shell eines Servers (usershell)

Um gitlab Repositories z.B. clonen zu können oder geänderte Dateien zu pushen ist dieses möglich mit dem https Protokoll oder ssh. Für https muss man sich für das HAW-gitlab zusätzlich access tokens (siehe unter gitlab) erzeugen. Die einfache Angabe des Passwortes reicht nicht. Deshalb ist das präferierte Verfahren mittels Schlüsselpaar. Außerdem ist es auch oft mühsam, immer wieder sein Passwort eingeben zu müssen, wenn man zu einem Server eine ssh-Verbindung ohne Schlüsselpaar aufbaut. Nach der Installation des Programms PuTTY (http://www.putty.org) stehen einige Tools zur Verfügung, mit deren Hilfe statt einer Passwort-basierten Anmeldung ein zuvor erzeugtes Schlüsselpaar (öffentlicher/privater Schlüssel) verwendet werden kann, um eine häufige Eingabe oder Klartextspeicherung des Passworts zu vermeiden. Die folgende Anleitung dient dazu, solch ein Schlüsselpaar zu erzeugen und für die Verwendung mit SSH einzurichten.

ssh key erzeugen

Zunächst einmal startet man das Programm Puttygen. In dem Dialog sollte man den Wert für „Number of bits in a generated key“ möglichst hoch setzen; z.B. auf 4096 (Abbildung 1).

Abbildung1

Dann klickt man auf die Taste „Generate“, um den Schlüssel zu erzeugen. Dabei muss man den Mauszeiger kontinuierlich über den Dialog bewegen. Das erzeugt eine gewisse Zufälligkeit, was der Zufallsgenerator unter Windows nicht vermag (Abbildung 2).

Abbildung2

Setzen Sie nun einen sinnvollen „Key comment“ und legen Sie eine „passphrase“ für ihren ssh-key fest. Die „passphrase“ ist ihr Passwort, dass Sie eingeben müssen, wenn sie ihren ssh-key nutzen möchten. Mit einem „ssh key agent“ muss die „passphrase“ nur beim laden in den Agenten eingegeben werden. Nun auf die Schaltfläche „Save private key“ klicken (Abbildung 3) und den Schlüssel mit einem sprechenden Namen, z.B. key_20231026.ppk, in einem privaten Speicherbereich (ggf. USB-Stick) abspeichern. Der so erzeugte private key ist nur für Putty gülig.

Abbildung 3

Möchten Sie Ihren Schlüssel auch unter Linux benutzen, können Sie diesen über „Conversions –> Export OpenSSH Key“ (Abbilgung 4) exportieren.

Abbildung 4

Man kann auch noch den öffentlichen Schlüssel abspeichern, quasi als Kopie. Man darf ihn aber nicht in diesem Format in die authorized_keys oder bei GitLab einfügen (siehe hierfür ssh public key). Nun ist das Schlüsselpaar erzeugt und kann benutzt werden. Fast alle SSH-basierten Programme unterstützen die Angabe einer Datei mit einem privaten Schlüssel (der zu einem öffentlichen Schlüssel in der authorized_keys – Datei passen muss) statt einer Passwortabfrage.

ssh public key

Damit Sie ihren ssh-key nutzen können, müssen Sie den öffentliche Schlüssel dem Ziel bereit stellen. Beispielsweise in Ihrer authorized_keys oder in GitLab. Den Schlüssel, den man aus dem PuTTyGen-Programm beim Speichern erhält kann man hierfür nicht benutzen, er liegt im falschen Format vor.

Falls Sie PuTTyGen bereits geschlossen haben, ist das kein Problem. Einfach PuTTyGen wieder starten und mit „Load“ den private key laden. Haben Sie eine Passphrase eingerichtet, dann müssen Sie diese jetzt angeben.

Markieren Sie den gesamten Text in dem Fenster (Abbildung 3, (oben blau unterlegt)) und kopieren Sie die Daten in die Zwischenablage (Strg + c).

GitLab

Dazu bei https://git.haw-hamburg.de/ einloggen, auf das Avatar-Bild klicken und dann auf „Preferences“:

Unter „SSH Keys“ auf „Add new key“ klicken. Den Text aus der Zwischenablage in das Fenster „key“ einfügen (Strg + v). Der markierte Text ist genau eine Zeile, enthält keine Umbrüche, außer am Ende. Weitere Einstellungen wie gewünscht tätigen und mit „Add key“ abschließen.

Fertig.

Linux / usershell

Melden sie sich auf einem Pool Rechner unter Linux mit ihrer infwXX-Kennung an.

Öffnen sie ein Terminal. Prüfen Sie ob es ein .ssh-Verzeichnis gibt. Falls nicht, erstellen Sie dieses mit mkdir .ssh und stellen die richtigen Zugriffsrechte ein chmod 700 .ssh. Wechseln Sie in das Verzeichnis .ssh (cd .ssh). Öffnen/Erstellen Sie die Datei authorized_keys (beispielsweise mit nano authorized_keys) und fügen Sie am Ende den Text aus der Zwischenablage ein. Der markierte Text ist genau eine Zeile, enthält keine Umbrüche, außer am Ende. Haben Sie die Datei neu erstellt, müssen auch hier die richtigen Zugriffsrechte eingestellt werden chmod 600 authorized_keys.

Mit ls -la .ssh sollten Sie folgende Einträge sehen:

infwXX000@usershell:~$ ls -la .ssh
drwx------ 1 infwXX000 domänen-benutzer 282 Sep 29 11:10 .
drwx--x--x 1 infwXX000 domänen-benutzer 406 Mär 29 2023 ..
-rw------- 1 infwXX000 domänen-benutzer 736 Sep 29 11:10 authorized_keys

ssh key in den Agenten laden

Ein SSH-Agent übernimmt die sichere Verwaltung der privaten Schlüssel und kann zum Beispiel mit dem Programm Pageant gestartet werden (dieses ist im Bundle von PuTTY und steht Ihnen auch in den Informatik-Laboren zur Verfügung). Dazu muss der ssh-agent gestartet und der private Schlüssel geladen werden. Wenn der Agent gestartet ist, findet man das dazugehörige Symbol in der Taskleiste (Abbildung 5) – ein PC mit einem Schlapphut. Mit einem rechten Mausklick kann man sich unter „View keys“ die schon geladenen Schlüssel ansehen oder mit „Add key“ einen Schlüssel hinzufügen. Dazu öffnet sich ein Filebrowser, mit dem man die entsprechende Datei auswählen kann; in diesem Fall z.B. H:\.ssh\key_20160118.ppk

Abbildung5

Bekannte Probleme

Sie haben alle Anweisungen dieser Seite ohne Fehler befolgt und Sie können sich nicht mit dem Puuty SSH-KEY anmelden. Bitte überprüfen Sie, ob Sie die neuste Putty-Version benutzen.