Die Authentifizierung über SSH-Key erstellt mit SSH-keygen für die Anmeldung zum Server im Internet.
In diesem Tutorial wird gezeigt, wie man ein Privat-Key mit ssh-keygen erstellt und wie man den Public SSH-Key auf dem Server hinterlegt.
SSH-Keygen und SSH-Key
SSH-Keys machen das eingeben von Passwörter bei der Verbindung über SSH überflüssig. Gerade für die Verwaltung von mehreren Accounts kann das viel Zeitersparnisse bringen. Im folgenden wird die Einrichtung von SSH-Key mit ssh-keygen auf Linux und macOS beschrieben. Hierzu man ein Terminal öffnet und den Befehl ausführt.
$ ssh-keygen -t rsa -b 4096
ssh-keygen fragt nun, in welcher Datei der Schlüssel abgelegt werden soll, am besten eine neue eindeutige Datei anlegen. Die Voreinstellung ist, dass der Schlüssel in der Datei (id_rsa) gespeichert wird, was nicht übersichtlich ist, zudem der Ordner „.ssh“ auch noch versteckt ist.
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mike/.ssh/id_rsa): mein-key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in mein-key.
Your public key has been saved in mein-key.pub.
The key fingerprint is:
SHA256:7oBofs25Wz2b03V2+5daXFUAq8ClijSfSjUog/3sVwo mike@Laptop
The key's randomart image is:
+---[RSA 4096]----+
| . .....|
| o . . o . .|
|. + + o + . .|
| * = + . . .|
| E + S . .|
| + + + . o =|
| o +o+.o o. . =+|
| o ..++ .+. .o.|
| .. oo. o. .. +|
+---- SHA256 -----+
Es wird ein Schlüssel nach dem RSA-Kryptosystem mit der Länge 4096 Bit erstellt. Damit ist der Schlüssel per Brute-Force kaum zu knacken.
Es lässt sich jetzt zusätzlich für noch mehr Sicherheit eine Passphrase vergeben, das ist aber nicht zwingend nötig. Falls man den Schlüssel mit einer Passphrase, also einem Passwort schützen möchte, gibt man hier ein beliebiges Passwort ein und bestätigt mit der Eingabetaste. Andernfalls kann man diese Option mit der Eingabetaste ohne Passwort überspringen. Wir erstellen an dieser Stelle ein Schlüsselpaar ohne zusätzliche Passphrase.
Das war es schon: Das Schlüsselpaar ist erstellt und liegt in der angegebenen Datei. Die Dateien können mit einem Text-Editor im Terminal mit vi oder nano, und bei macOS mit einem beliebigen Editor geöffnet werden, um das Schlüsselpaar anzusehen, es darf jedoch nichts verändert werden, auch keine Leerzeilen einfügen.
mein-key
mein-key.pub
Der Inhalt der Datei mein-key.pub in verkürzter Form etwa wie dieser.
ssh-rsa AAAAB3NzaC1yc2EAAADAQABACQCuA1tumTMG/sa7OpjxbuL5vz7R..
...
VOOpjavLDM0iZjWbRc3KeKuEIu9Lw== mike@Laptop
Public SSH-Key auf Server bringen
Nun bleibt noch der letzte Schritt, den Public-Key auf dem WebServer zu hinterlegen. Am besten lässt es sich mit „ssh-copy-id“ erledigen. Da die Erstellung auf dem „Steuerrechner“, also dem Laptop erfolgt ist, muss der öffentliche Schlüssel noch auf den WebServer kopiert werden. Zunächst loggt man sich dazu auf dem Server ein und legt dann den Schlüssel dort ab. Dazu der Befehl im Terminal wie folgt lautet.
$ ssh-copy-id -i ~/.ssh/mein-key mike@webserver.org
Als alternative, wenn man „ssh-copy-id“ nicht nutzen möchte, kann der Inhalt der lokalen Datei ~/.ssh/mein-key.pub
zum WebServer in die Datei ~/.ssh/authorized_keys
kopiert werden. Führe dazu den Befehl in der Shell beim Steuerrechner aus.
$ cat ~/.ssh/mein-key.pub | ssh mike@webserver.org "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
chmod 0600 ~/.ssh/authorized_keys
Alternativ kann der Public SSH-Key auch per Copy Paste direkt in der Datei authorized_keys gespeichert werden.
SSH-Key an einem sicheren Ort aufbewahren
Der Private-Key mein-key
muss geheim bleiben, daher diesen nicht auf dem Server unterbringen.
Unter Windows kann OpenSSH bereitgestellt werden, unter Einstellungen – Apps und Features – Optionale Features, oder es wird PuTTY (puttygen) verwendet.