Key-basierte SSH Logins mit PuTTY
Diese Anleitung veranschaulicht, wie man ein private/public Key Paar generiert und verwendet um sich auf einem entfernten System mit SSH unter Verwendung von PuTTY einzuloggen. PuTTY ist ein SSH Client, der für Windows und Linux (obwohl es auf Windows Systemen gebrächlicher ist) verfügbar ist. Mit Key-basierte SSH Logins kannst Du die normale Benutzername/Passwort Login-Prozedur deaktivieren, was bedeutet, dass sich nur Leute mit einem gültigen private/public Key Paar anmelden können. Somit sind brute-force Attacken zwecklos, d.h. Dein System ist sicherer.
Autor: Falko Timme
1 Vorbemerkung
In dieser Anleitung verwende ich einen Windows Desktop um mich mit einem Linux SSH Server (Debian Sarge, IP Adresse: 192.168.0.100) zu verbinden.
2 Installation von PuTTY, PuTTYgen und Pageant auf dem Windows System
Zuerst müssen wir PuTTY, PuTTYgen und Pageant auf unserem Windows System installieren. Wir müssen dazu nur die ausführbaren Dateien (.exe) runter laden und sie irgendwo speichern, z.B. auf dem Desktop. Wir brauchen sie nicht installieren, da sie Standalone-Anwendungen sind. Um sie zu starten, brauchen wir sie nur anzuklicken (Doppelklick).
Lade folgende Dateien von der PuTTY Download Page und speichere sie auf Deinem Windows System, z.B. auf dem Desktop:
- http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
- http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
- http://the.earth.li/~sgtatham/putty/latest/x86/pageant.exe
3 Erstelle ein Profil mit Einstellungen für unseren 192.168.0.100 Server
In PuTTY kannst Du Profile für Verbindungen zu Deinen zahlreichen SSH Servern erstellen. Du musst die Einstellungen also nicht noch einmal eingeben, wenn Du Dich erneut mit einem bestimmten Server verbinden möchtest.
Lass uns ein Profil für unseren 192.168.0.100 Server erstellen. Starte PuTTY indem Du auf dessen ausführbare Datei klickst (Doppelklick). Nun befindest Du Dich in der Kategorie Session (siehe linke Seite des Screenshots). Gib 192.168.0.100 unter Host Name (oder IP address) ein, gib 22 unter Port ein und wähle SSH unter Protocol:
Gehe dann zu Connection -> Data und lege einen Benutzernamen fest, mit dem Du Dich auf Deinem SSH Server unter Auto-login username anmelden möchtest. In dieser Anleitung verwende ich „root“:
Gehe dann erneut zu Session. Gib unter Saved Sessions einen Namen für das Profil ein, z.B. 192.168.0.100 oder irgendeine andere Zeichenfolge, bei der Du weißt, für welchen Server das Profil ist. Klicke dann auf Save:
Wenn Du PuTTY das nächste Mal verwendest, brauchst Du nur das entsprechende Profil aus der Saved Sessions Textarea auswählen, auf Load klicken und dann Open öffnen
4 Verbinde Dich mit dem SSH Server
Nun können wir uns mit dem SSH Server verbinden, indem wir einfach auf Open klicken.
Wenn Du Dich zum ersten Mal mit dem Server verbindest, erscheint eine Sicherheitswarnung. Das passiert, das PUTTY den Host Key des Servers noch nicht kennt. Es ist also sicher auf Yes zu klicken (wenn das später noch mal passiert, kann es bedeuten, dass ein anderer Server gerade unter der gleichen IP Adresse läuft, oder dass jemand eingebrochen ist und den Key geändert hat.)
Wir haben die Benutzernamen gespeichert, mit dem wir uns in unseren Profileinstellungen verbinden, wir müssen ihn hier also nicht noch einmal eingeben. Wir müssen nur das Passwort des Benutzers bestimmen:
Das war der „normale“ Weg sich anzumelden, d.h. mit einem Benutzernamen und einem Passwort. Wenn jemand anderes den Benutzernamen und das Passwort kennt, kann er/sie sich ebenfalls anmelden. Wenn Du also schwache Passwörter hast und/oder Opfer eine brute-force Attacke bist, kann das ein Problem werden. Lass uns das jetzt ändern.
5 Ein privates/öffentliches Key Paar generieren
Wir können PuTTYgen verwenden, um ein private/public Key Paar zu erzeugen. Starte es indem Du auf dessen ausführbare Datei klickst (Doppelklick). Pass auf, dass Du SSH-2 RSA unter Type of key to generate wählst und 1024 als die Number of bits in a generated key definierst. Klicke dann auf Generate:
Bewege bitte den Cursor über das leere Feld während der Erstellung des Keys um eine gewissen Zufälligkeit zu erzeugen:
Jetzt ist ein private/public Key Paar entstanden. Unter Key comment kannst Du irgendeinen Kommentar eingeben; normalerweise verwendet man hier seine E-Mail Adresse. Lege dann eine Key passphrase fest und wiederhole sie unter Confirm passphrase. Du brauchst dieses Passwort um Dich bei SSH mit Deinem neuen Key einzuloggen. Klicke dann auf Save publick key und speichere ihn an einem sicheren Ort auf Deinem Computer. Du kannst Dir einen Dateinamen und eine Dateiendung aussuchen, aber es sollte etwas sein, dass Dir zeigt, für welches System es ist.
Klicke dann auf Save private key. Du kannst es am gleichen Ort wie den public Key speichern – es sollte ein Ort sein, auf den nur Du zugreifen kannst und den Du nicht verlieren kannst! (Wenn Du die Keys verlierst und Benutzernamen/Passwort Logins deaktivert hast, kannst Du Dich nicht mehr anmelden!) Du kannst wieder einen Dateinamen auswählen, aber dieses Mal muss die Endung .ppk sein:
Kopiere dann den public Key aus dem PuTTYgen Fenster:
6 Speichere den Public Key auf dem Server
Melde Dich dann auf Deinem SSH Server (wenn Du die vorherige SSH Session bereits beendet hast) an, immer noch mit dem Benutzernamen und Passwort, und füge den public Key in die Datei ~/.ssh/authorized_keys2 (in einer Zeile!) wie folgt ein:
mkdir ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys2
ssh-rsa AAAAB3NzaC1yc2EA[...]Lg5whU0zMuYE5IZu8ZudnP6ds= myname@example.com
Diese Datei darf nur von diesem Benutzer beschreibbar/lesbar sein, also führen wir dies aus
chmod 600 ~/.ssh/authorized_keys2
7 Hänge den Private Key an das PuTTY Profil an
Starte nun PuTTY erneut und lade das Profil Deines SSH Servers (192.168.0.100):
Gehe dann zu SSH -> Auth und klicke auf Browse:
Durchsuche Dein Dateisystem und wähle Deinen zuvor erstellen private Key aus:
Gehe dann erneut zu Session und klicke auf Save:
Jetzt haben wir den private Key an unser 192.168.0.100 PuTTY Profil angehängt.
8 Unser erster Key-basierter Login
Nun ist alles für unseren ersten Key-basierten Login auf unserem SSH Server bereit. Klicke auf Open:
Wie Du sehen kannst, wird nun der public Key für die Authentifizierung verwendet und Du wirst nach dem Passwort gefragt (welches Du in Kapitel 5 festgelegt hast):
9 Benutzername/Passwort Logins deaktivieren
Bis jetzt kannst Du Dich mit Deinem private/public Key Paar und immer noch mit Benutzername/Passwort Logins anmelden. Wenn jemand also keinen private Key seiner PuTTY Session hinzufügt, wird er nach einem Benutzernamen und Passwort gefragt. Um also eine größere Sicherheit zu erzeugen, müssen wir Benutzernamen/Passwort Logins deaktivieren (das solltest Du nur tun, wenn Du weißt, dass Deine Key-basierte Logins funktionieren, denn wenn sie das nicht tun und Du Benutzername/Passwort Logins deaktivierst, dann hast Du ein Problem…).
Um Benutzername/Passwort Logins zu deaktivieren, müssen wir die sshd Konfigurationsdatei modifizieren. Auf Debian/Ubuntu Systemen ist das /etc/ssh/sshd_config. Du solltest Protocol auf 2 (1 ist unsicher und sollte nicht verwendet werden!), PasswordAuthentication auf no und UsePAM auf no (oder die UsePAM Zeile auskommentieren) setzen, z.B. wie folgt:
vi /etc/ssh/sshd_config
[...] Protocol 2 PasswordAuthentication no UsePAM no [...]
Starte sshd dann neu. Auf Debian/Ubuntu kannst Du es wie folgt tun:
/etc/init.d/ssh restart
Wenn Du nun eine PuTTY Session öffnest, ohne dass Dein private Key angehängt ist, dürftest Du nicht mehr in der Lage sein Dich anzumelden.
10 Sorge dafür, dass sich Pageant Dein Key Passwort merkt
Wenn Du nun Deinen Key-basierten Login verwendest, musst Du immer noch Dein Key Passwort angeben. Das kann nervig sein, wenn Du Dich mehrmals am Tag mit dem SSH Server verbindest. Glücklicherweise kannst Du Pageant Dein Passwort mitteilen und Pageant wird dann das Passwort bereitstellen, wenn Du Dich auf Deinem SSH Server anmeldest.
Du startest Pageant indem Du auf dessen ausführbare Datei klickst (Doppelklick):
Danach solltest Du in der Taskbar sehen, dass Pageant läuft:
Klicke nun auf das Pageant Icon (Doppelklick) in der Taskbar. Folgendes Fenster erscheint. Klicke auf Add Key:
Durchsuche Dein Dateisystem und wähle Deinen private Key aus:
Gib dann das Passwort für den private Key ein:
Der Key wird nun in der Pageant Key Liste aufgelistet. Klicke auf Close:
Solange Pageant im Taskbar läuft, kannst Du Dich auf Deinem SSH Server anmelden, ohne das Passwort eingeben zu müssen – das erledigt Pageant:
Wenn Du Pageant stoppst, vergisst es alle Keys. Wenn Du Pageant also das nächste Mal startest, musst Du die Keys erneut hinzufügen. Das kann auch nervig sein. Um dies zu verhindern, können wir einen Shortcut auf dem Desktop zu Pageant erstellen. Klicke mit der rechten Mouse-Taste auf das Pageant Programm und wähle Create Shortcut:
Nun solltest Du einen Shortcut finden. Klicke mit der rechten Mouse-Taste darauf und gehe zu Properties:
Unter Target findest Du nun den Pfad zu pageant.exe, z.B. „C:Dokumente und EinstellungenfalkoDesktoppageant.exe“ (wenn es in Deinem Pfad keineLeerzeichen gibt, dann brauchst Du die Anführungszeichen nicht). Du kannst nun einfach den Ort Deines private Keys dieser Zeile hinzufügen. Wenn Dein private Key zum Beispiel C:puttymy_keysprivate_key_192.168.0.100.ppk ist, dann sollte die Zeile wie folgt aussehen:
„C:Dokumente und EinstellungenfalkoDesktoppageant.exe“ C:puttymy_keysprivate_key_192.168.0.100.ppk
(wenn es im Pfad zu Deinem private Key Leerzeichen gibt, musst Du es wieder in Anführungszeichen setzen, z.B. wie folgt:
„C:Dokumente und EinstellungenfalkoDesktoppageant.exe“ „C:directory with lots of spaces in namemy keysprivate_key_192.168.0.100.ppk“
)
Klicke dann auf OK:
Wenn Du nun auf den Pageant Shortcut klickst (Doppelklick), dann läd Pageant automatisch Deinen private Key und fragt Dich nach dem Passwort. Gib es ein und das war’s.