SSH Keygen: Der perfekte Leitfaden für Anfänger
SSH (Secure Shell) ist ein unverzichtbares Werkzeug für den sicheren Zugriff auf Remote-Server. Die auf SSH-Keys basierende Authentifizierung bietet eine weitaus stärkere Sicherheit als die Verwendung von Passwörtern und ist ein essentielles Wissen für alle Entwickler. In diesem Artikel werde ich die grundlegenden Konzepte der SSH-Key-Generierung bis hin zur praktischen Anwendung einfach und detailliert aus der Perspektive eines Anfängers erklären.
Warum ist SSH-Keygen notwendig?
Das bestehende Passwortsystem hat den Nachteil, dass es während der Eingabe dem Risiko der Offenlegung ausgesetzt ist und anfällig für Brute-Force-Attacken ist. SSH-Keys lösen dieses Problem, indem sie ein Paar von Schlüsseln verwenden: den öffentlichen Schlüssel (Public Key) und den privaten Schlüssel (Private Key).
- Privater Schlüssel (Private Key): Wird sicher auf dem Computer des Nutzers gespeichert und darf niemals nach außen offenbart werden. Nur mit diesem Schlüssel kann man auf den Server zugreifen.
- Öffentlicher Schlüssel (Public Key): Ist der Schlüssel, der auf dem Server registriert wird, zu dem man sich verbinden möchte. Es ist kein Sicherheitsproblem, wenn er öffentlich ist.
Bei einer SSH-Verbindung verschlüsselt der Server die Authentifizierungsanforderung unter Verwendung des öffentlichen Schlüssels des Nutzers, und wenn der private Schlüssel des Nutzers dies erfolgreich entschlüsseln kann, wird der Zugriff gewährt. So kann sicher kommuniziert werden, ohne dass Passwörter ausgetauscht werden müssen.
Anleitung zur Erstellung eines SSH-Keys: ssh-keygen
Befehl
Der grundlegendste Befehl zur Erstellung von SSH-Keys ist ssh-keygen
. Öffnen Sie das Terminal und geben Sie den folgenden Befehl ein.
ssh-keygen
Wenn Sie den Befehl ausführen, werden Ihnen einige Fragen gestellt. Lassen Sie uns diese einzeln betrachten.
-
Enter file in which to save the key (/home/youruser/.ssh/id_rsa):
-
Diese Frage fragt nach dem Speicherort für die zu erstellende Schlüsseldatei. Wenn es keinen besonderen Grund gibt, ist es ratsam, den Standardpfad
.ssh/id_rsa
zu verwenden. Drücken Sie einfachEnter
.
-
-
Enter passphrase (empty for no passphrase):
-
Diese Frage fragt, ob Sie ein Passwort für den privaten Schlüssel festlegen möchten. Es wird dringend empfohlen, dies zur Verbesserung der Sicherheit zu tun. Wenn Sie ein Passwort festlegen, ist es nicht möglich, den privaten Schlüssel zu verwenden, wenn jemand den Schlüssel erhält, ohne das Passwort zu kennen. Geben Sie das Passwort ein, wobei im Terminal nichts angezeigt wird, und drücken Sie
Enter
.
-
-
Enter same passphrase again:
- Bestätigen Sie das vorhin eingegebene Passwort, indem Sie es erneut eingeben.
-
Erwartetes Ergebnis:
Your identification has been saved in /home/youruser/.ssh/id_rsa
Your public key has been saved in /home/youruser/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx youruser@yourmachine
The key's randomart image is:
+---[RSA 3072]----+
| .=*o. |
| . +.E+ |
| . o.=. . |
| o . o |
| . S . |
| . . |
| . |
| |
| |
+----[SHA256]-----+
Nach der Erstellung des Schlüssels werden zwei Dateien im Verzeichnis ~/.ssh/
erstellt.
id_rsa
: Privater Schlüssel (Private Key)id_rsa.pub
: Öffentlicher Schlüssel (Public Key)
RSA vs. Ed25519: Welche Methode sollten wir wählen?
Beim Erstellen von SSH-Keys können Sie mit dem ssh-keygen
Befehl die -t
Option verwenden, um die Verschlüsselungsmethode des Schlüssels festzulegen. Die am häufigsten verwendeten Methoden sind RSA und Ed25519.
1. RSA-Methode (-t rsa
)
- Diese Methode wird seit den Anfängen von SSH weit verbreitet verwendet.
- Sie ist als stabil erwiesen und mit den meisten Systemen kompatibel.
- Die Schlüssellänge kann festgelegt werden, und es wird empfohlen,
4096
-Bit zu verwenden.- Beispiel:
ssh-keygen -t rsa -b 4096
- Beispiel:
2. Ed25519-Methode (-t ed25519
)
- Eine neuere Verschlüsselungsmethode, die auf der elliptischen Kurven-Kryptographie Curve25519 basiert.
- Sie bietet die gleiche oder eine höhere Sicherheitsstufe mit kürzeren Schlüssellängen im Vergleich zu RSA.
- Die Geschwindigkeit bei der Schlüsselerstellung und Authentifizierung ist hoch und der Ressourcenverbrauch niedrig.
- Die meisten modernen Systeme unterstützen sie, aber sehr alte Systeme sind möglicherweise nicht kompatibel.
- Beispiel:
ssh-keygen -t ed25519
- Beispiel:
Empfohlene Methode und Gründe
Aktuell, wenn es keine besonderen Kompatibilitätsprobleme gibt, empfehle ich dringend die Ed25519-Methode.
- Bessere Sicherheit: Sie bietet starke Sicherheit auch mit kürzeren Schlüssellängen, was sie widerstandsfähiger gegen Brute-Force-Attacken macht.
- Schnellere Leistung: Der Prozess der Schlüsselerstellung und -authentifizierung ist effizienter.
- Einfachheit: Im Gegensatz zu RSA müssen Sie sich keine Gedanken über die Schlüssellänge machen und können sie einfach erstellen.
Beispiel zur Erstellung eines Ed25519-Keys
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_my_server -C "my_server_ssh_key"
-t ed25519
: Erstellt einen Schlüssel im Ed25519-Format.-f ~/.ssh/id_ed25519_my_server
: Legt den Namen der Schlüsseldatei aufid_ed25519_my_server
fest. (Um ihn von dem bestehendenid_rsa
zu unterscheiden, können Sie einen anderen Namen wählen.)-C "my_server_ssh_key"
: Fügt einen Kommentar für den Schlüssel hinzu. Es ist ratsam, einen Namen zu wählen, damit klar ist, wozu der Schlüssel erstellt wurde.
Erwartetes Ergebnis:
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): # Passwort eingeben (empfohlen)
Enter same passphrase again: # Passwort erneut eingeben
Your identification has been saved in /home/youruser/.ssh/id_ed25519_my_server
Your public key has been saved in /home/youruser/.ssh/id_ed25519_my_server.pub
The key fingerprint is:
SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy my_server_ssh_key
The key's randomart image is:
+--[ED25519 256]--+
| .+=+ |
| . oE B |
| o + O |
| . + + |
| o . S |
| . = . |
| . B + |
| . * = o |
|+ o . = . |
+----[SHA256]-----+
Jetzt haben Sie die grundlegenden Methoden zur Erstellung und Verwaltung von SSH-Keys verstanden. Wenn Sie den erstellten öffentlichen Schlüssel (id_ed25519_my_server.pub
oder id_rsa.pub
) in die Datei ~/.ssh/authorized_keys
des Remote-Servers einfügen, können Sie sicher ohne Passwort zugreifen. Im nächsten Artikel werden wir im Detail besprechen, wie Sie den erstellten SSH-Key auf dem Server registrieren und verwenden.
Wenn Sie Fragen haben, können Sie jederzeit in den Kommentaren nachfragen!
Es sind keine Kommentare vorhanden.