Standardmäßig meldet man sich mit Benutzername und Passwort via SSH an einem Server an. Sobald man aber mehrere Server verwaltet, wird es lästig, ständig Passwörter aus dem Passwort-Safe zu kramen und einzugeben. Es gibt neben der Authentifizierung via Passwort noch eine andere Möglichkeit: Die Anmeldung über einen private key.
Funktionsweise
Auf einem Client wird ein zufälliger Schlüssel generiert und abgespeichert. Dieser Schlüssel kann zur Sicherheit mit einem Passwort versehen werden, sodass nur berechtigte Nutzer auf den Schlüssel zugreifen können. Zu diesem Schlüssel – dem private key – gehört natürlich auch ein Schloss: Der public key. Dieses „Schloss“ wird nun auf jedem Server, auf den man zugreifen will, „eingebaut“, sodass man sich mit dem passenden Schlüssel verbinden kann. Dabei können auf jedem Server mehrere „Schlösser“ installiert werden.
Bleibt festzuhalten:
Jeder Nutzer hat einen privaten Schlüssel, der seine Identität repräsentiert. Ist ein zum Schlüssel gehöriges Schloss auf einem Server vorhanden, kann er sich dort einloggen.
SSH private key generieren
Ein besonders sicherer, privater Schlüssel wird über folgendes Kommando generiert:
ssh-keygen -t ecdsa -b 521
Der Speicherort kann auf der Standardeinstellung gelassen werden. Ein Passwort sollte unbedingt gesetzt werden. Sollte der private key einmal in falsche Hände geraten, wäre er immer noch durch ein Passwort geschützt.
SSH public key auf einen Server übertragen
Der private key ist jetzt generiert, jetzt musst nur noch „das passende Schloss“ auf einem Server installiert werden. Dazu wird der zum private key gehörige public key die Server übertragen, auf die später mittels private key zugegriffen werden soll:
ssh-copy-id benutzer@server.com
Dieses eine Mal muss das Benutzerpasswort für den entfernten Server noch angegeben werden, damit der public key installiert werden kann. Jedes weitere Mal kann eine SSH Session über das einfache Kommando
ssh benutzer@server.com
gestartet werden. Falls der private key (wie empfohlen) mit einem Passwort gesichert ist, muss nur noch dieses Passwort eingegeben werden, um den Schlüssel zu entsperren. Die Anzahl der zu verwaltenden Passwörter kann man mit der private key Authentifizierung also auf ein Passwort reduzieren.
Schlüsselverwaltung mit Gnome Keyring
SSH Keys, PGP Zertifikate usw. können mit dem Gnome Keyring („Passwörter und Verschlüsselung“) sehr einfach und an zentraler Stelle verwaltet werden. Auch die Generation von neuen SSH Schlüsselpaaren ist über die Gnome-eigene Oberfläche möglich.
Passwortauthentifizierung für SSH deaktivieren
Der SSH Login via private key hat aber nicht nur den Vorteil, dass man quasi einen Schlüssel für viele Server besitzt, sondern bringt auch noch einen ganz anderen entscheidenden Vorteil mit sich: Kurze Passwörter lassen sich über Brute Force Attacken erraten – Schlüssel zu erraten ist mir heutiger Rechenkraft aber nicht zu bewältigen. Wer seinen Server noch besser absichern will, verzichtet auf einen Passwort-Login und nutzt nur noch die Anmeldung über Schlüssel. Ein Backup des privaten Schlüssels sei in diesem Fall angeraten… ;)
Die Passwortauthentifizierung kann in der Datei „/etc/ssh/sshd_config“ abgeschaltet werden, indem die Zeile „PasswordAuthentication“ einkommentiert und auf „no“ gesetzt wird. Danach muss der SSH Service neu gestartet werden:
sudo service ssh restart