Der ultimative Leitfaden für SSH-Key-Management und Sicherheit
Secure Shell (SSH) ist das Standardprotokoll zur Verwaltung von Linux-Servern. Während Passwörter verwendet werden können, bieten SSH-Schlüssel eine deutlich sicherere und bequemere Alternative. Die korrekte Verwaltung dieser Schlüssel – von der Generierung bis zur Rotation – ist jedoch entscheidend für eine robuste Sicherheitsarchitektur.
Dieser Leitfaden deckt alles ab, was Sie über SSH-Schlüssel wissen müssen, von der grundlegenden Generierung bis hin zu fortgeschrittenen Management-Strategien.
1. Sichere Schlüssel generieren
Der erste Schritt zur SSH-Sicherheit ist die Wahl des richtigen Algorithmus und die Generierung eines starken Schlüsselpaars.
SSH-Key-Generator Online
Obwohl ein SSH-Key-Generator online praktisch für Tests oder das schnelle Erstellen eines Schlüsselpaars ist, sollten Sie für Produktionsschlüssel niemals ein webbasiertes Tool verwenden. Generieren Sie Ihre privaten Schlüssel immer lokal auf Ihrem Rechner, um sicherzustellen, dass sie niemals über das Netzwerk übertragen werden.
Ssh-keygen Command Builder
Das Standardwerkzeug zur Generierung von Schlüsseln ist ssh-keygen. Ein ssh-keygen Command Builder kann Ihnen helfen, die besten Parameter zu wählen. Heutzutage sollten Sie Ed25519 gegenüber dem älteren RSA bevorzugen.
Empfohlener Befehl für einen modernen, sicheren Schlüssel:
ssh-keygen -t ed25519 -C "[email protected]"
Falls Sie RSA aus Kompatibilitätsgründen mit älteren Systemen verwenden müssen, stellen Sie sicher, dass es mindestens 4096 Bit lang ist:
ssh-keygen -t rsa -b 4096
2. Zugriff verwalten: Das authorized_keys-Format
Die Datei authorized_keys, die sich normalerweise unter ~/.ssh/ befindet, legt fest, welche öffentlichen Schlüssel sich als ein bestimmter Benutzer anmelden dürfen.
Das authorized_keys-Format
Ein einzelner Eintrag im authorized_keys-Format besteht aus drei Teilen:
- Optionen (Optional): Schränken ein, was der Schlüssel tun darf (z. B.
from="1.2.3.4",no-agent-forwarding). - Schlüsseltyp: Der Algorithmus (z. B.
ssh-ed25519oderssh-rsa). - Öffentliche Schlüsseldaten: Der eigentliche base64-kodierte Schlüssel.
- Kommentar (Optional): Ein Label zur Identifizierung des Schlüssels (meist E-Mail oder Hostname).
Beispiel mit einer Einschränkung:
from="192.168.1.0/24" ssh-ed25519 AAAAC3Nza... [email protected]
3. Server verifizieren: Das known_hosts-Format
Während authorized_keys der Client-Authentifizierung dient, dient die Datei known_hosts der Server-Authentifizierung. Sie schützt Sie vor Man-in-the-Middle (MITM)-Angriffen.
Das known_hosts-Format
Das known_hosts-Format ordnet den Hostnamen oder die IP-Adresse eines Servers seinem öffentlichen Host-Key zu.
Wenn Sie sich zum ersten Mal mit einem Server verbinden, fordert SSH Sie auf, den Fingerabdruck des Hosts zu verifizieren. Einmal akzeptiert, wird der Schlüssel zu ~/.ssh/known_hosts hinzugefügt. Falls sich der Schlüssel des Servers jemals ändert, warnt SSH Sie und blockiert die Verbindung.
Format eines Eintrags:
[hostname],[IP] ssh-ed25519 AAAAC3Nza...
4. Best Practices für SSH-Sicherheit
- Verwenden Sie eine Passphrase: Schützen Sie Ihren privaten Schlüssel immer mit einer starken Passphrase. Selbst wenn Ihr Schlüssel gestohlen wird, ist er ohne die Passphrase wertlos.
- Passwort-Authentifizierung deaktivieren: Sobald SSH-Schlüssel funktionieren, deaktivieren Sie die Passwort-Anmeldung in der
/etc/ssh/sshd_config, indem SiePasswordAuthentication nosetzen. - Schlüssel regelmäßig rotieren: Wie Passwörter sollten auch SSH-Schlüssel regelmäßig gewechselt werden, insbesondere wenn Mitarbeiter das Unternehmen verlassen.
- Verwenden Sie den SSH-Agent: Nutzen Sie
ssh-agent, um Ihre entschlüsselten Schlüssel im Speicher zu halten, damit Sie nicht bei jeder Verbindung die Passphrase eingeben müssen. - Implementieren Sie einen Jump-Server (Bastion Host): Anstatt alle Server dem öffentlichen Internet auszusetzen, nutzen Sie einen einzigen, gehärteten Einstiegspunkt.
5. Zusammenfassung
Indem Sie SSH-Key-Generatoren beherrschen und die Formate authorized_keys und known_hosts verstehen, können Sie das Risiko eines unbefugten Zugriffs auf Ihre Infrastruktur erheblich senken. Der Übergang von Passwörtern zur schlüsselbasierten Authentifizierung ist der wichtigste Schritt zur Absicherung jeder Linux-basierten Umgebung.