tas2580
Blog über Webentwicklung

OpenSSH Public Key Authentifizierung

tas2580  

Die Public Key Authentifizierung hat gegenüber der Passwort Authentifizierung den Vorteil, dass es kein Passwort gibt das jemand mitschneiden könnte. Auf dem Server liegen nur die öffentlichen Schlüssel der Benutzer, selbst wenn man die bekommt ist es beinahe unmöglich daraus den privaten Schlüssel den man zur Anmeldung braucht zu errechnen. Die Anmeldung am Server wird dadurch also sicherer, außerdem spart man sich das eintippen eines Passwortes wenn man sich anmelden möchte was sehr praktisch ist wenn man mehrere Server betreibt und sich deshalb recht häufig per SSH anmelden muss.


Am Client

Als erstes muss man am Client mit dem man sich Authentifizieren möchte einen Schlüssel erzeugen und den dann auf den Server übertragen. Wenn man mehrere Rechner benutzt um sich mit dem Server zu verbinden kann der Schritt einfach auf jedem Rechner wiederholt werden.

Schlüsselpaar generieren

Als erstes benötigt man natürlich einen Schlüssel den man zu Authentifizierung am Server benutzen kann. Hier wird ein 4096 Bit RSA-Schlüssel erstellt der aus den Dateien key_rsa und key_rsa.pub besteht. Bei key_rsa handelt es sich um den privaten Schlüssel den man niemals weitergeben sollte. In key_rsa.pub befindet sich der öffentliche Schlüssel der auf den Server an dem man sich später anmelden möchte gesendet wird.

ssh-keygen -b 4096

Während dem erstellen des Schlüssels hat man die Möglichkeit den Schlüssel mit einer Passphrase zu schützen, das sollte auf jeden Fall gemacht werden da der Schlüssel dann AES-CBC verschlüsselt statt in Klartext gespeichert wird. Sollte der Schlüssel also entwendet werden benötigt der Angreifer zusätzlich noch das Passwort für den Schlüssel.

Schlüssel auf Server übertragen

Zum übertragen auf den Server wird die SSH-Verbindung mittels Passwort-Authentifizierung genutzt. Man muss sich also noch ein letztes mal mit seinem Passwort am Server anmelden.

ssh-copy-id -i .ssh/key_rsa.pub user@example.com

Nachdem man den Befehl eingegeben und mit ENTER bestätigt hat wird man nach dem Passwort für user gefragt und der Schlüssel wird zum Server übertragen. Auf dem Server wird in /home/user/.ssh/authorized_keys ein neuer Eintrag mit dem Schlüssel erstellt.

Key-Authentifizierung testen

Jetzt kann man auch direkt schon die Verbindung per Key Authentifizierung testen. Dazu meldet man sich wieder vom Server ab und erneut an. Wenn man seinen Schlüssel mit einem Passwort geschützt hat wird man jetzt nach den Passwort gefragt. Das Passwort ist nicht das des Benutzers auf dem Server sondern das des Schlüssels. Normalerweise muss man das Passwort nur einmal angeben und kann dann den Schlüssel bis zum Neustart ohne weitere Passworteingabe nutzen da das Betriebssystem das Passwort speichert.

ssh user@example.com

Normalerweise sollte man jetzt ohne Eingabe eines Passworts mit dem Server verbunden sein.

Am Server

Am Server muss man eigentlich nichts mehr ändern, allerdings kann es unter Umständen sinnvoll sein das Login per Key-Authentifizierung zu erzwingen.

Key-Authentifizierung erzwingen

Wer möchte kann jetzt noch am Server die Key-Authentifizierung erzwingen, danach ist es nicht mehr möglich sich mit einem Passwort per SSH anzumelden.

nano /etc/ssh/sshd_config

Hier sucht man nach #PasswordAuthentication yes und ändert die Zeile in PasswordAuthentication no. Danach muss noch der SSH Server neu gestartet werden damit die Änderung wirksam wird.

service ssh restart

Am besten probiert man jetzt erst mal den Login in einer zweiten SSH Sitzung und lässt die erste Sitzung solange offen damit man noch was korrigieren kann sollte der Login in der zweiten Sitzung nicht funktionieren.

Nur für einen Benutzer / eine Gruppe

Unter Umständen möchte man die Key-Authentifizierung nur für einen bestimmten Benutzer erzwingen, alle anderen Benutzer sollen sich weiterhin ganz normal per Passwort-Authentifizierung anmelden dürfen.

nano /etc/ssh/sshd_config

In der Datei fügt man am Ende einfach folgendes ein:

Match User user
    PasswordAuthentication no

In dem Beispiel wird für den Benutzer user die Key-Authentifizierung erzwungen. Wenn man die Key-Authentifizierung für eine ganze Gruppe erzwingen möchte kann man das natürlich auch machen:

Match Group gruppenname
    PasswordAuthentication no

Kommentare


Bitte warten ...

Kommentar schreiben

URLs werden automatisch umgewandelt.
[b]DEIN TEXT[/b] für Fett gedruckt
[quote]DEIN ZITAT[/quote] für Zitate
[code]DEIN CODE[/code] für Code
captcha