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 Public-Key

SSH Public-Key

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