Public-Key¶
Der Standard bei der Auslieferung eines SSH-Servers ist die Authentifizierung mittels Benutzername + Password. Hier gibt es das Problem, dass Kennwort zwar unleserlich als Hash-Wert auf den Systemen abgelegt sind, aber beim Zugriff auf diese Werte (siehe /etc/passwd) könnte man mit geeigneter Software und Zeit versuchen die passende Kombination (das Passwort) zu finden.
Bei der Pulic-Key-Authentifizierung erstellt ein Benutzer ein Schlüsselpaar bestehend aus
Öffentlicher Schlüssel (*.pub) wird auf Server hinterlegt
Privater Schlüssel verbleibt auf Rechner des Benutzers und sollte besonders geschützt werden (Zugriffsberechtigungen, Passphrase)
Beginnen wir mit der Erstellung von Schlüsseln auf unserer Maschine und mit dem Benutzer, mit dem wir die SSH-Verbindung erstellen wollen.
SSH-Schlüssel erstellen - ssh-keygen
Das erledigt das Tool ssh-keygen
und wir erhalten standardmäßig
RSA-Schlüsselpaare.
Wir entscheiden uns für folgende Syntax mit maximaler Schlüssellänge für RSA:
ssh-keygen -t rsa -b 4096
oder alternativ: ssh-keygen -t ed25519
Man beantwortet alle Abfragen gemäß Vorgaben für die Bezeichner und Speicherorte und sollte sich bei Abfrage der Passphrase entscheiden.
Wichtig
Die Erstellung einer Passphrase erhöht weiter die Sicherheit der Public-Key-Authentifizierung. Aber natürlich muss dann beim Aufbau der SSH-Client-/Server-Verbindung eben auch diese Eingabe getätigt werden!
Die Schlüssel findet man dann in ~/.ssh
:
> ls -al ~/.ssh
total 20
drwx------ 2 joeb joeb 4096 May 22 17:15 .
drwxr-xr-x 24 joeb joeb 4096 Sep 28 17:52 ..
-rw------- 1 joeb joeb 464 May 22 17:14 id_ed25519
-rw-r--r-- 1 joeb joeb 103 May 22 17:14 id_ed25519.pub
Man erkennt gut die eingeschränkten (Oktaler Modus 600) Rechte für die privaten Schlüssel.
Jetzt muss der Schlüssel noch auf den SSH-Server.
SSH-Schlüssel kopieren - ssh-copy-id
Wir starten mit dem Standardtools für das Schlüssel-Kopieren:
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@servername
Der Effekt ist das Anfügen (inklusive Erstellen) der Datei
/home/username/.ssh/authorized_keys
Alternative Schlüssel-Kopiermethode: manuelles Kopieren und Manipulieren der authorized_keys Datei des Benutzers auf dem SSH-Server.
scp ~/.ssh/id_ed25519.pub username@servername:
(kopiert Public Key
in Home-Dir des Users)
cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys
(ggf. vorher mkdir -p ~/.ssh
)
Man sollte den Eintrag kontrollieren: cat ~/.ssh/authorized_keys
Und man sollte den kopierten öffentlichen Schlüssel löschen:
rm ~/id_ed25519.pub