• Allgemein
  • SSH Keygen: Der ultimative Leitfaden zur Generierung sicherer SSH-Schlüssel

SSH Keygen: Der ultimative Leitfaden zur Generierung sicherer SSH-Schlüssel

Was ist SSH Keygen und wozu wird es verwendet?

Was ist SSH Keygen?

SSH Keygen ist ein Befehlszeilentool, das du verwenden kannst, um SSH-Schlüsselpaare zu generieren. SSH (Secure Shell) ist ein Protokoll, das zur sicheren remote Verbindung mit Computern über ein Netzwerk verwendet wird.

Wozu dient SSH Keygen?

SSH Keygen ermöglicht es dir, anstelle von Passwörtern SSH-Schlüssel für die Authentifizierung zu verwenden. Dies bietet mehrere Vorteile:

Verschlüsselte Authentifizierung

SSH-Schlüssel basieren auf Kryptographie mit öffentlichen und privaten Schlüsseln. Dein privater Schlüssel bleibt lokal auf deinem Computer gespeichert, während du deinen öffentlichen Schlüssel mit dem Remote-Server teilst. Der Server authentifiziert dich dann, indem er deinen öffentlichen Schlüssel mit dem von dir gesendeten signierten Hash vergleicht.

Verbesserte Sicherheit

Da Passwörter kompromittiert werden können, bieten SSH-Schlüssel eine sicherere Alternative. Du kannst deine privaten Schlüssel auch mit Passphrasen schützen, um eine zusätzliche Sicherheitsebene hinzuzufügen.

Automatisierte Authentifizierung

Automatisierte Prozesse wie Batch-Skripte und Cron-Jobs können SSH-Schlüssel zur Authentifizierung verwenden, ohne dass ein Benutzer eingreifen muss.

Remote-Verwaltung

SSH-Schlüssel ermöglichen es dir, Remote-Computer ohne Passworteingabe zu verwalten. Dies ist praktisch für Systemverwalter und DevOps-Teams.

Vorteile der Verwendung von SSH-Schlüsseln

Die Verwendung von SSH-Schlüsseln bietet zahlreiche Vorteile gegenüber dem herkömmlichen Anmeldeverfahren mit Passwort:

Verbesserte Sicherheit

  • Keine Brute-Force-Angriffe: Im Gegensatz zu Passwörtern sind SSH-Schlüssel zu lang, als dass man sie erraten könnte, was Brute-Force-Angriffe praktisch unmöglich macht.
  • Kein Diebstahl durch Phishing oder Malware: Da SSH-Schlüssel nicht über das Netzwerk übertragen werden, können sie nicht durch Phishing-E-Mails oder Malware gestohlen werden.

Bequemlichkeit

  • Schlüsselbasierte Authentifizierung ohne Passwort: Auf Remote-Server kann ohne Eingabe eines Passworts zugegriffen werden, was den Anmeldeprozess automatisiert.
  • Automatisierung der Skripterstellung: SSH-Schlüssel können in Skripts und Konfigurationen verwendet werden, um Aufgaben auf Remote-Servern zu automatisieren.

Compliance und Audit

  • Verbesserte Compliance: SSH-Schlüssel ermöglichen die Implementierung von Compliance-Anforderungen wie NIST SP 800-53, die eine schlüsselbasierte Authentifizierung vorschreiben.
  • Erleichterte Audits: Audit-Trails können zur Nachverfolgung des Zugriffs auf Remote-Server verwendet werden, da SSH-Schlüssel eine eindeutige Identifizierung jedes Benutzers ermöglichen.

Weitere Vorteile

  • Kompatibilität mit verschiedenen Plattformen: SSH-Schlüssel werden von allen gängigen Betriebssystemen und SSH-Clients unterstützt.
  • Unterstützung für mehrere Schlüssel: Mehrere SSH-Schlüssel können für verschiedene Zwecke generiert werden, z. B. für verschiedene Benutzer oder Server.
  • Integration mit Tools für die Schlüsselverwaltung: Es gibt zahlreiche Tools zur Verwaltung und Bereitstellung von SSH-Schlüsseln, wie z. B. SSH Key Manager von Royal TS.

Auswahl des geeigneten Schlüsseltyps

Wenn du ein SSH-Schlüsselpaar generierst, musst du die Wahl zwischen verschiedenen Schlüsseltypen treffen. Die beiden gängigsten Typen sind:

RSA (Rivest-Shamir-Adleman)

  • Vorteile:

    • Etablierter und weit verbreiteter Schlüsseltyp
    • Hochgradig sicher und bietet starke Verschlüsselung
    • Kann für die Signatur sowie für die Verschlüsselung verwendet werden
  • Nachteile:

    • Langsamere Leistung im Vergleich zu ECDSA

ECDSA (Elliptic Curve Digital Signature Algorithm)

  • Vorteile:

    • Schneller und effizienter als RSA
    • Gilt als sicherer als RSA, besonders gegen Quantenangriffe
    • Kleinere Schlüssellängen sind möglich, was die Sicherheit bei begrenztem Speicherplatz verbessert
  • Nachteile:

    • Nicht so weit verbreitet wie RSA
    • Wird nur für die Signatur verwendet, nicht für die Verschlüsselung

Welchen Schlüsseltyp solltest du wählen?

Die Wahl des Schlüsseltyps hängt von deinen spezifischen Anforderungen ab:

  • Sicherheit: RSA ist der traditionellere und bewährte Schlüsseltyp, während ECDSA als etwas sicherer gegen Quantenangriffe gilt.
  • Leistung: ECDSA ist schneller und effizienter als RSA.
  • Kompatibilität: RSA ist mit einem breiteren Spektrum von Servern und Geräten kompatibel als ECDSA.
  • Anwendungsfall: ECDSA ist besonders nützlich für ressourcenbeschränkte Geräte oder für Anwendungen, die hohe Signaturgeschwindigkeiten erfordern.

Festlegen der Schlüsselgröße

Die Größe deines SSH-Schlüssels ist entscheidend für die Sicherheit deiner Verbindung. Je größer der Schlüssel, desto schwieriger ist es für potenzielle Angreifer, ihn zu knacken. Allerdings kann ein größerer Schlüssel auch die Leistung deines Systems beeinträchtigen.

Verfügbare Schlüsselgrößen

Üblicherweise kannst du aus Schlüsselgrößen zwischen 1.024 und 8.192 Bit wählen.

Empfohlene Schlüsselgrößen

Im Allgemeinen wird eine Schlüsselgröße von mindestens 2.048 Bit empfohlen. Diese Größe bietet einen ausreichenden Schutz vor den meisten Angriffen und hat keine nennenswerten Auswirkungen auf die Leistung.

Faktoren, die bei der Schlüsselgrößenauswahl zu berücksichtigen sind

Wenn du die Schlüsselgröße festlegst, solltest du Folgendes berücksichtigen:

Sicherheitsanforderungen

Wenn du ein hohes Sicherheitsniveau benötigst, solltest du eine größere Schlüsselgröße wählen.

Rechenleistung

Eine größere Schlüsselgröße kann die Rechenleistung deines Systems beeinträchtigen. Wenn du ein älteres oder ressourcenbeschränktes System verwendest, solltest du eine kleinere Schlüsselgröße wählen.

Zukünftige Sicherheit

Da sich die Rechenleistung ständig verbessert, solltest du eine Schlüsselgröße wählen, die auch zukünftigen Angriffen standhält.

Best Practices

  • Wähle eine Schlüsselgröße von mindestens 2.048 Bit.
  • Verwende für besonders sensible Daten eine größere Schlüsselgröße (z. B. 4.096 Bit).
  • Vermeide die Verwendung von Schlüsselgrößen unter 1.024 Bit, da diese nicht mehr als sicher gelten.

Hinzufügen eines Passphraseschutzes

Um die Sicherheit deines privaten Schlüssels weiter zu verbessern, kannst du einen Passphrasenschutz hinzufügen. Dabei handelt es sich um ein Passwort, das du jedes Mal eingeben musst, wenn du den Schlüssel verwendest, um dich bei einem Server anzumelden. Dadurch wird verhindert, dass Unbefugte deinen Schlüssel verwenden können, selbst wenn er gestohlen wird.

Vorteile eines Passphraseschutzes

  • Erhöhte Sicherheit: Die zusätzliche Authentifizierungsebene macht es für Angreifer noch schwieriger, sich Zugang zu deinem Konto zu verschaffen.
  • Schutz vor Brute-Force-Angriffen: Ohne Passphrasenschutz könnten Angreifer jeden erdenklichen Passcode ausprobieren, um deinen privaten Schlüssel zu knacken. Ein Passwortschutz macht dies praktisch unmöglich.

Hinzufügen eines Passphrasenschutzes für deinen SSH-Schlüssel

So fügst du deinem SSH-Schlüssel einen Passphrasenschutz hinzu:

  1. Generiere ein neues SSH-Schlüsselpaar (siehe vorheriger Abschnitt).
  2. Gib den folgenden Befehl ein:
    ssh-keygen -p
    
  3. Du wirst aufgefordert, eine Passphrase einzugeben.
  4. Bestätige die Passphrase, indem du sie erneut eingibst.
  5. Dein Schlüsselpaar wird nun mit einem Passphrasenschutz geschützt.

Tipps zur Auswahl einer starken Passphrase

  • Verwende eine lange, komplexe Passphrase mit mindestens 16 Zeichen.
  • Vermeide die Verwendung von leicht zu erratenden Wörtern oder Phrasen.
  • Verwende eine Kombination aus Groß- und Kleinbuchstaben, Zahlen und Symbolen.
  • Speichere deine Passphrase niemals als Klartext auf deinem Computer oder Handy.

Anmelden bei einem Server mit einem passwortgeschützten SSH-Schlüssel

Wenn du dich bei einem Server mit einem passwortgeschützten SSH-Schlüssel anmeldest, wirst du aufgefordert, die Passphrase einzugeben. Gib die Passphrase ein und drücke auf die Eingabetaste, um dich anzumelden.

Fehlerbehebung bei Problemen mit dem Passphrasenschutz

Wenn du beim Anmelden mit einem passwortgeschützten SSH-Schlüssel Probleme hast, überprüfe Folgendes:

  • Überprüfe, ob du die richtige Passphrase eingegeben hast.
  • Überprüfe, ob der private Schlüssel die richtige Berechtigung hat. Die Berechtigung sollte auf 600 gesetzt sein.
  • Überprüfe, ob der öffentliche Schlüssel zum privaten Schlüssel passt. Du kannst dies mit dem folgenden Befehl tun:

    ssh-keygen -y -f private_key > public_key
    ssh-keygen -v -f public_key
    

Speichern des privaten Schlüssels sicher

Nachdem du dein neues SSH-Schlüsselpaar generiert hast, ist es wichtig, den privaten Schlüssel sicher aufzubewahren. Denn dieser Schlüssel ermöglicht den Zugriff auf deine Remote-Server und sollte daher vor unbefugtem Zugriff geschützt werden.

Auswahl eines Speicherorts

Überlege dir, wo du den privaten Schlüssel aufbewahrst. Folgende Optionen stehen dir zur Verfügung:

  • Lokaler Computer: Du kannst den privaten Schlüssel auf deinem lokalen Computer in einem verschlüsselten Verzeichnis speichern. Dies ist eine bequeme Option, bietet aber möglicherweise nicht das gleiche Sicherheitsniveau wie andere Optionen.
  • Externer Speicher: Die Speicherung des Schlüssels auf einem externen Laufwerk oder einem USB-Stick kann zusätzlichen Schutz bieten. Achte jedoch darauf, diese Geräte vor Diebstahl oder Beschädigung zu schützen.
  • Passwort-Manager: Passwort-Manager wie LastPass oder 1Password können auch zum sicheren Speichern von SSH-Schlüsseln verwendet werden. Diese Dienste verschlüsseln deine Schlüssel und ermöglichen den Zugriff von mehreren Geräten aus.

Schutz mit Passphrase

Beim Generieren deines SSH-Schlüsselpaars solltest du eine starke Passphrase festlegen. Diese wird zum Entschlüsseln deines privaten Schlüssels verwendet, wenn du ihn verwenden möchtest. Wähle eine Passphrase, die lang, komplex und leicht zu merken ist.

Vermeidung von unbefugtem Zugriff

Treffe zusätzliche Maßnahmen, um unbefugten Zugriff auf deinen privaten Schlüssel zu verhindern:

  • Beschränke den Zugriff: Gib nur autorisierten Benutzern Zugriff auf das Verzeichnis, in dem dein privater Schlüssel gespeichert ist.
  • Verwende Firewall-Einstellungen: Konfiguriere deine Firewall so, dass nur vertrauenswürdige IP-Adressen auf deinen SSH-Server zugreifen können.
  • Aktiviere Zwei-Faktor-Authentifizierung: Richte eine Zwei-Faktor-Authentifizierung für zusätzliche Sicherheit ein. Dies erfordert die Eingabe eines Codes von deinem Smartphone oder einem Sicherheitsschlüssel, zusätzlich zum privaten Schlüssel.

Denke daran, dass die Sicherheit deines SSH-Schlüssels von deiner Verantwortung abhängt. Indem du die angegebenen Schritte befolgst, kannst du die Sicherheit deines privaten Schlüssels gewährleisten und dein System vor unberechtigtem Zugriff schützen.

Konvertieren von privaten Schlüsseln in andere Formate

In bestimmten Fällen musst du möglicherweise deinen privaten SSH-Schlüssel in ein anderes Format konvertieren. Dazu gibt es verschiedene Gründe:

Häufige Konvertierungsformate

Die häufigsten Konvertierungsformate für private SSH-Schlüssel sind:

  • OpenSSH-Format (PEM): Das Standardformat für SSH-Schlüssel, das von den meisten SSH-Clients und -Servern unterstützt wird.
  • PuTTY-Format (PPK): Ein von PuTTY verwendetes proprietäres Format.
  • Amazon Web Services (AWS) EC2-Format: Ein von AWS EC2-Instanzen verwendetes spezifisches Format.

Gründe für die Konvertierung

Du musst deinen privaten Schlüssel möglicherweise konvertieren, wenn:

  • Du einen SSH-Client verwendest, der ein bestimmtes Format erfordert.
  • Du deine Schlüssel mit einer Anwendung oder einem Dienst integrierst, der ein anderes Format verwendet.
  • Du die Kompatibilität mit bestimmten Geräten oder Plattformen sicherstellen musst.

Konvertierung mit ssh-keygen

Du kannst deinen privaten SSH-Schlüssel mit dem Befehl ssh-keygen -p konvertieren:

ssh-keygen -p -e -f <private-key-file>

Wobei:

  • -p die Konvertierungsoption ist.
  • -e das Ausgabeformat angibt (z. B. -e pem für PEM).
  • -f den Pfad zur privaten Schlüsseldatei angibt.

Konvertierung mit PuTTYgen (für PuTTY-Format)

Wenn du deinen Schlüssel in das PuTTY-Format konvertieren möchtest, kannst du das Tool PuTTYgen verwenden:

  1. Lade PuTTYgen herunter und installiere es.
  2. Öffne PuTTYgen und wähle im Menü "Conversions" die Option "Import Key".
  3. Wähle deinen privaten SSH-Schlüssel aus und importiere ihn.
  4. Gebe einen Passphrase ein (optional).
  5. Wähle im Menü "Conversions" die Option "Export OpenSSH key".

Weitere Konvertierungstools

Zusätzlich zu ssh-keygen und PuTTYgen gibt es auch verschiedene Online-Tools und Tools von Drittanbietern, mit denen du private SSH-Schlüssel konvertieren kannst, darunter:

Wichtige Hinweise

Beachte die folgenden wichtigen Hinweise, wenn du private SSH-Schlüssel konvertierst:

  • Verwende beim Konvertieren immer eine sichere Verbindung.
  • Bewahre deine Passphrases sicher auf oder speichere sie in einem Passwort-Manager.
  • Erstelle nach der Konvertierung eine Sicherungskopie des konvertierten Schlüssels.
  • Lösche die ursprüngliche private Schlüsseldatei, nachdem du den konvertierten Schlüssel erfolgreich erstellt hast.

Fehlerbehebung bei SSH-Keygen-Problemen

Wenn du bei der Verwendung von SSH Keygen auf Probleme stößt, gibt es einige Schritte, die du zur Fehlerbehebung unternehmen kannst:

Berechtigungsprobleme

  • Fehler: Permission denied beim Generieren des Schlüssels
  • Lösung: Stelle sicher, dass du über Schreibrechte im Verzeichnis verfügst, in dem du den Schlüssel speichern möchtest. Du kannst den Befehl chmod verwenden, um Berechtigungen zu ändern.

Ungültige Eingaben

  • Fehler: Invalid argument beim Festlegen der Schlüsselgröße
  • Lösung: Überprüfe, ob die angegebene Schlüsselgröße gültig ist und den unterstützten Bereich (z. B. 2048 bis 4096 Bit) einhält.

Passwortverschlüsselung fehlgeschlagen

  • Fehler: Error encrypting passphrase beim Hinzufügen eines Passwortschutzes
  • Lösung: Versuche, eine andere Verschlüsselungsmethode zu verwenden (z. B. aes-256-cbc anstelle von aes-128-cbc). Du kannst die verfügbaren Optionen mit dem Befehl openssl enc -help anzeigen.

Probleme beim Hinzufügen des öffentlichen Schlüssels

  • Fehler: Permission denied (publickey) beim Versuch, den öffentlichen Schlüssel zum Remote-Server hinzuzufügen
  • Lösung: Stelle sicher, dass der Benutzer, unter dem du den SSH-Befehl ausführst, über die Berechtigung zum Schreiben in die Datei ~/.ssh/authorized_keys auf dem Remote-Server verfügt.

Probleme beim Generieren eines Schlüssels mit einem bestimmten Algorithmus

  • Fehler: No such file or directory beim Versuch, einen ECDSA-Schlüssel zu generieren
  • Lösung: Überprüfe, ob die von dir verwendete OpenSSL-Version die Generierung des gewünschten Algorithmus unterstützt. Du kannst die unterstützten Algorithmen mit dem Befehl openssl list -algorithms anzeigen.

Andere Probleme

Wenn du immer noch Probleme bei der Verwendung von SSH Keygen hast, kannst du versuchen, den SSH-Agenten (z. B. ssh-agent) neu zu starten oder die SSH-Konfigurationsdateien zu überprüfen (~/.ssh/config und /etc/ssh/sshd_config). Es kann auch hilfreich sein, die Manpages von SSH Keygen (man ssh-keygen) und SSH (man ssh) zu konsultieren.