Key-basierte SSH Logins auf Linux Server mit PuTTY

27.02.2010

Dieses HowTo erklärt, wie man ein private/public Key Paar mit Putty generiert und verwendet um sich auf einem entfernten Server mit SSH unter Benutzung des Programmes PuTTY einzuloggen. PuTTY ist ein SSH Client Programm, das es für Windows- als auch für Linux-Systeme zum herunterladen gibt . Mit Key-basierte SSH Logins kann der standartmässige Benutzername / Passwort Login Vorgang auf einem Linux Server deaktiviert werden, was bedeutet, dass sich nur User mit einem gültigen private / public Key Paar anmelden können. Dadurch ist der Server besser vor brute-force Attacken geschützt.

Arbeitsschritte:

  1. Installation von PuTTY, PuTTYgen und Pageant auf Windows
  2. Profil mit Einstellungen für den Server 192.168.2.1 anlegen
  3. Mit dem SSH Linux Server connecten
  4. Ein privates/öffentliches Key Paar mit PuTTY Key Generator erstellen
  5. Den Public Key auf dem Linux Server speichern
  6. Einbinden des Private Key an das PuTTY Profil
  7. Erster Key-basierter Login auf Linux Server
  8. Username/Passwort Logins auf Linux Server deaktivieren
  9. Pageant Key Passwort speichern

1.) Installation von PuTTY, PuTTYgen und Pageant auf Windows

Zuerst müssen die Programme auf dem Windows Rechner installiert werden. Dazu müssen die ausführbaren Dateien (.exe) heruntergeladen werden. Die drei Anwendungen brauchen nicht installiert werden, da sie Standalone Programme sind.

Lade folgende Dateien von der PuTTY Download Page und speichere sie auf Deinem Windows Rechner:

Putty Programme

2.) Profil mit Einstellungen für den Server 192.168.2.1 anlegen

PuTTY kann viele Profile für Verbindungen zu zahlreichen SSH Servern speichern.

  • PuTTY starten durch einen Doppelklick.
  • Unter Host Name (or IP adress) die IP eingeben - hier im Beispiel 192.168.2.1
  • Port 22 wählen
  • SSH als Protocol wählen

Putty Start

  • Anschließend auf Connection gehen
  • Menüpunkt Data auswählen und einen Benutzernamen festlegen, mit dem auf dem SSH Server unter Auto-login username anmeldet werden soll
  • In diesem HowTo verwenden wir “root”:

Putty Configuration

  • Erneut zum Menüpunkt Session gehen.

  • Unter Saved Sessions einen Namen für das Profil eingeben,

    z.B. 192.168.2.1 oder irgendeine anderer Name…

  • Nun auf Save klicken:

Putty Configuration

Wenn PuTTY das nächste Mal benutzt wird, braucht nur das entsprechende Profil aus der Saved Sessions Textarea ausgewählt werden und mit Load/Open geöffnet werden.

3.) Mit dem SSH Linux Server connecten

Nun kann mit dem SSH Server eine Verbindung aufgebaut werden, indem einfach auf Open geklickt wird.

Putty verbinden

Bei der ersten Verbindung zum Linux/Unix Server, erscheint eine Sicherheitswarnung. Das passiert, da das Putty Programm den Host Key des Servers noch nicht kennt.

Es ist also entgegen der Warnung schon sicher auf Yes zu klicken

Putty Server

Der Benutzernamen ist ja vorher gespeichert (root) worden, mit dem wir uns in unseren Profileinstellungen verbinden, deshalb muß ehr hier nicht eingegeben werden

Es muss nur dass Passwort des Benutzers eingeben werden

Linux Server

Das ist der “standart" Weg sich anzumelden, d.h. mit einem Usernamen und einem Passwort. Wenn jemand anderes jedoch den Benutzernamen und das Passwort kennt, kann er sich jedoch genauso anmelden.

Wenn also ein schwaches Passwörter verwendet wird oder Sie Opfer einer brute-force Attacke sind, kann das ein Problem darstellen. Dies sollte man ändern.

4.) Ein privates/öffentliches Key Paar mit PuTTY Key Generator erstellen

PuTTYgen kann man verwenden, um ein private/public Key Paar zu generieren. Man startet es mit einem Doppelklick

und wählt SSH-2 RSA unter Type of key to generate und 1024 als die Number of bits in a generated key.

Anschließend auf auf Generate klicken:

PuTTY Key Generator

Nun den Cursor über das leere Feld bewegen während der Erstellung des Keys um eine gewissen Zufälligkeit zu erzeugen die für das Erstellen benötigt wird:

Putty Key generieren

  • Jetzt ist ein private/public Key Paar generiert. Unter Key comment kann ein beliebiger Kommentar eingeben werden. Normalerweise verwendet man hier seine eigene E-Mail Adresse.
  • Nun legt man einen Key Passphrase fest und wiederholt ihn unter Confirm passphrase. Dieses Passwort braucht man um sich bei SSH mit Deinem neuen Key einzuloggen.
  • Anschließend auf Save public key klicken und an einem sicheren Ort auf dem Windows Rechner speichern.
  • Ein Dateinamen und eine Dateiendung kann beliebig ausgesucht werden.

Putty Key Generator

Save public key

Jetzt klickt man auf Save private key. (Beachte: Wenn dieser Key gelöscht wird und Username/Passwort Logins deaktivert sind, kann man sich nicht mehr anmelden!)

Es kann wieder ein beliebiger Dateinamen auswählt werden, aber dieses Mal muss die Endung .ppk sein:

Putty Key Generator

Private Key speichern

Abschließend Kopiert man den public Key aus dem PuTTYgen Fenster:

Putty Key Gen

5.) Den Public Key auf dem Linux Server speichern

Nun meldet man sich wieder auf dem Linux Server an (immer noch mit dem Benutzernamen und Passwort) und fügt 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 CABBB9NzaC1yc4EB[...]Lg6wh50zMuYE5Lzu8ZudnP3dS= [email protected]

Diese Datei darf nur von diesem Benutzer beschreibbar und lesbar sein, also ändern wir die Datei Rechte

chmod 600 ~/.ssh/authorized_keys2

Nun startet man den Linux Server neu mit:

reboot

6.) Einbinden des Private Key an das PuTTY Profil

Nun startet man PuTTY erneut und ladet das Profil des Linux Servers (192.168.2.1):

Putty Config

Jetzt geht man im Menü auf SSH/Auth und klickt auf Browse:

Putty Auth

In dem aufgehenden Fenster navigiert man zu dem vorher erstellten privaten Key und wählt diesen aus.

Private Key wählen

Putty Config Key

Nun erneut auf Session gehen und auf Save klicken:

putty save session

Jetzt haben wir den private Key an unser 192.168.2.1 PuTTY Profil angehängt.

7.) Erster Key-basierter Login auf Linux Server

Nun ist alles für den ersten Key-basierten Login auf unserem SSH Server getan. Mit Kick auf Open öffnet sich die Verbindung:

Putty Open session

Nun wird wie man sehen kann der erstellte Public Key für die Authentifizierung verwendet und man wird nach dem Passwort gefrage (welches vorher festgelegt wurde):

Unix Server

8.) Username/Passwort Logins auf Linux Server deaktivieren

Bis jetzt kann man sich mit dem private/public Key Paar und immer noch mit Username/Passwort Logins anmelden. Wenn jemand also keinen private Key seiner PuTTY Session hinzufügt, wird er nach einem Benutzernamen und Passwort gefragt. Um nun also eine größere Sicherheit zu erziehlen, müssen Benutzernamen/Passwort Logins deaktiviert werden (das darf man nur tun, wenn man sicher weiß, dass Key-basierte Logins funktionieren, denn wenn sie das nicht tun und Du Benutzername/Passwort Logins deaktivierst, hat man ein großes 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:

/etc/init.d/ssh restart

Wenn man jetzt eine PuTTY Session öffnet, ohne dass ein private Key angehängt ist, dürftest man nicht mehr in der Lage sein sich anzumelden.

9.) Pageant Key Passwort dauerhaft speichern

Wenn nun Key-basierten Login verwendest wird, muss immer noch das Key Passwort angeben werden. Das kann nervig sein, wenn mehrmals am Tag mit dem SSH Server verbunden wird. Glücklicherweise kann man Pageant das Passwort mitteilen und Pageant wird dann das Passwort bereitstellen, wenn man sich auf dem SSH Linux Server anmeldet

Pageant wird gestartet indem auf dessen ausführbare Datei geklickt wird (Doppelklick)

Pageant

Danach solltest Du in der Taskbar sehen, dass Pageant läuft:

Pageant in Taskleiste

Klicke nun auf das Pageant Icon (Doppelklick) in der Taskbar. Folgendes Fenster erscheint. Klicke auf Add Key:

Pageant Key List

Navigiere in dem Dateisystem zum Speicherort und wähle den private Key aus:

Private Key File auswählen

Gib dann das Passwort für den jeweiligen Private Key ein

Der Key wird nun in der Pageant Key Liste aufgelistet. Zum Beenden nun auf auf Close klicken

Pageant Key List

Solange Pageant im Taskbar läuft, kann man sich nun auf dem Linux Server anmelden, ohne das Passwort eingeben zu müssen – das erledigt jetzt Pageant:

Linux Server Howto

Wenn Pageant beendet wrid, vergisst es alle Keys. Wenn Pageant also das nächste Mal gestartet wird, müssen alle Du Keys erneut hinzufügt werden.

comments powered by Disqus