Generieren und Sichern von SSH-Schlüsseln für den Fernzugriff

Meistern Sie den sicheren Fernzugriff, indem Sie lernen, robuste SSH-Schlüsselpaare mit `ssh-keygen` zu generieren. Dieser Leitfaden behandelt Best Practices für die Auswahl von Schlüsseltypen (Ed25519), die Sicherung Ihres privaten Schlüssels mit einer Passphrase, die effiziente Bereitstellung des öffentlichen Schlüssels mit `ssh-copy-id` und die Verwendung von `ssh-agent` für nahtlose Authentifizierung. Stellen Sie sicher, dass Ihre Infrastruktur vor Brute-Force-Angriffen geschützt ist, indem Sie eine schlüsselbasierte Zugriffskontrolle implementieren.

So generieren und sichern Sie SSH-Schlüssel für den Fernzugriff

Secure Shell (SSH) ist die Standardmethode, um eine Verbindung zu entfernten Servern herzustellen. Wenn Sie für den täglichen Zugriff immer noch Passwörter verwenden, bieten SSH-Schlüssel eine stärkere Authentifizierung und beseitigen das Risiko von Passwort-Rateangriffen auf dieses Konto.

Diese Anleitung zeigt Ihnen, wie Sie SSH-Schlüssel generieren, den privaten Schlüssel mit einer Passphrase schützen, den öffentlichen Schlüssel auf einem Server installieren und ssh-agent verwenden, damit Sie bei jeder Verbindung nicht die Passphrase eingeben müssen.

Grundlegendes zu SSH-Schlüsselpaaren

Ein SSH-Schlüsselpaar besteht aus zwei verschiedenen Komponenten:

  1. Der private Schlüssel: Dieser Schlüssel darf niemals weitergegeben werden. Er bleibt sicher auf Ihrem lokalen Rechner und wird verwendet, um Ihre Identität gegenüber dem entfernten Server nachzuweisen.
  2. Der öffentliche Schlüssel: Dieser Schlüssel wird frei weitergegeben und in die Datei ~/.ssh/authorized_keys auf dem/den entfernten Server(n) hochgeladen, auf die Sie zugreifen möchten. Der Server verwendet diesen Schlüssel, um die von Ihrem privaten Schlüssel erstellte Signatur zu überprüfen.

Auswahl des richtigen Algorithmus

Wählen Sie beim Generieren von Schlüsseln einen modernen Algorithmus. Ed25519 ist eine gute Standardeinstellung für aktuelle OpenSSH-Clients, da es schnell, kompakt und weit verbreitet ist. RSA funktioniert immer noch und ist nützlich, wenn Sie eine Verbindung zu älteren Systemen herstellen müssen, die Ed25519 nicht unterstützen.

Schritt 1: Generieren des SSH-Schlüsselpaares

Das Dienstprogramm ssh-keygen ist das Standardwerkzeug zum Erstellen von SSH-Schlüsselpaaren unter Linux, macOS und Windows (über Git Bash oder WSL).

Generieren eines Ed25519-Schlüssels (empfohlen)

Um einen modernen Ed25519-Schlüssel zu erstellen, verwenden Sie den folgenden Befehl. Wir geben den Schlüsseltyp (-t ed25519) an und fügen einen Kommentar (-C) hinzu, um den Zweck oder Besitzer des Schlüssels zu identifizieren:

ssh-keygen -t ed25519 -C "[email protected]_or_host_name"

Wenn Sie dazu aufgefordert werden:

  1. Datei, in der der Schlüssel gespeichert werden soll: Drücken Sie die Eingabetaste, um den Standardspeicherort zu akzeptieren (/home/user/.ssh/id_ed25519).
  2. Passphrase (empfohlen): Legen Sie eine starke Passphrase für Schlüssel fest, die außerhalb von entsorgbaren Laborsystemen verwendet werden. Dies verschlüsselt Ihren privaten Schlüssel, sodass eine gestohlene Schlüsseldatei nicht sofort verwendbar ist.

Generieren eines RSA-Schlüssels (Alternative)

Wenn die Kompatibilität mit sehr alten Systemen erforderlich ist, können Sie einen RSA-Schlüssel generieren und dabei sicherstellen, dass Sie eine ausreichende Schlüssellänge (mindestens 4096 Bit) angeben:

ssh-keygen -t rsa -b 4096 -C "your_rsa_key_comment"

Schlüsselausgabedateien

Nach der Generierung werden zwei Dateien in Ihrem ~/.ssh/-Verzeichnis erstellt (unter der Annahme der Standardeinstellungen):

  • id_ed25519 (oder id_rsa): Ihr privater Schlüssel
  • id_ed25519.pub (oder id_rsa.pub): Ihr öffentlicher Schlüssel

Sicherheitsbewährte Praxis: Geben Sie niemals die Datei ohne die Erweiterung .pub weiter. Legen Sie restriktive Berechtigungen für Ihren privaten Schlüssel mit chmod 600 ~/.ssh/id_ed25519 fest.

Schritt 2: Kopieren des öffentlichen Schlüssels auf den Server

Der entfernte Server muss Ihren öffentlichen Schlüssel in seiner Datei ~/.ssh/authorized_keys haben, um Zugriff zu gewähren.

Verwenden von ssh-copy-id (die einfachste Methode)

Das Dienstprogramm ssh-copy-id automatisiert den Prozess, kümmert sich um die Verzeichniserstellung und die Berechtigungseinstellungen auf dem entfernten Server. Sie müssen sich ein letztes Mal mit einem Passwort authentifizieren, um diese Ersteinrichtung durchzuführen.

ssh-copy-id user@remote_host_ip

Bei Erfolg teilt Ihnen der Befehl mit, dass die Schlüssel hinzugefügt wurden. Sie können jetzt versuchen, sich anzumelden.

Manuelles Kopieren (wenn ssh-copy-id nicht verfügbar ist)

Wenn Sie ssh-copy-id nicht verwenden können, können Sie den Inhalt des öffentlichen Schlüssels manuell anhängen. Zeigen Sie zuerst den öffentlichen Schlüssel an:

cat ~/.ssh/id_ed25519.pub

Melden Sie sich dann mit Ihrem Passwort beim entfernten Server an und hängen Sie die Ausgabe an die Datei authorized_keys an:

# Auf dem entfernten Server
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Ersetzen Sie <PASTE_YOUR_PUBLIC_KEY_HERE> durch den tatsächlichen Schlüsselinhalt
echo "<PASTE_YOUR_PUBLIC_KEY_HERE>" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Schritt 3: Sichern des Zugriffs mit ssh-agent

Es wird mühsam, jedes Mal, wenn Sie eine Verbindung zu einem Server herstellen, Ihre Passphrase einzugeben. Der ssh-agent ist ein Hintergrundprogramm, das Ihre entschlüsselten privaten Schlüssel sicher im Speicher hält, sodass Sie sie verwenden können, ohne die Passphrase wiederholt eingeben zu müssen.

Starten und Verwenden von ssh-agent

  1. Stellen Sie sicher, dass der Agent läuft: Auf den meisten modernen Linux/macOS-Systemen startet der Agent automatisch, wenn Sie sich anmelden. Sie können seinen Status überprüfen, indem Sie nach den Umgebungsvariablen suchen:

    echo $SSH_AUTH_SOCK
    
  2. Fügen Sie Ihren Schlüssel zum Agenten hinzu: Verwenden Sie den Befehl ssh-add, um Ihren privaten Schlüssel zu laden. Sie werden nur einmal nach der Passphrase gefragt.

    ssh-add ~/.ssh/id_ed25519
    # Enter passphrase for /home/user/.ssh/id_ed25519: **********
    # Identity added: /home/user/.ssh/id_ed25519 (comment)
    
  3. Überprüfen Sie die geladenen Schlüssel:

    ssh-add -l
    

Wenn Sie jetzt ssh user@remote_host_ip ausführen, authentifiziert sich die Verbindung mit dem vom Agenten gehaltenen Schlüssel, ohne erneut nach der Passphrase zu fragen (bis die Agentensitzung endet).

Wichtige Hinweise zu ssh-agent

  • Sitzungsabhängig: Die in den Agenten geladenen Schlüssel sind normalerweise nur für die aktuelle Terminalsitzung oder Desktop-Anmeldesitzung verfügbar. Sie müssen ssh-add nach dem Abmelden und erneuten Anmelden erneut ausführen.
  • Schlüssellebensdauer: Sie können eine maximale Lebensdauer für Schlüssel festlegen, die im Agenten gehalten werden, indem Sie das Flag -t verwenden (z. B. ssh-add -t 1h ~/.ssh/id_ed25519 hält den Schlüssel für eine Stunde geladen).

Erweiterte Sicherheit: Deaktivieren der Passwortauthentifizierung

Sobald Sie bestätigt haben, dass die schlüsselbasierte Authentifizierung auf allen erforderlichen Servern einwandfrei funktioniert, ist die stärkste Sicherheitsmaßnahme, passwortbasierte Anmeldungen vollständig zu deaktivieren. Dies verhindert Brute-Force-Angriffe auf Passwörter.

  1. Stellen Sie mit Ihrem Schlüssel eine SSH-Verbindung zu Ihrem Server her.

  2. Bearbeiten Sie die Konfigurationsdatei des SSH-Daemons, die sich normalerweise unter /etc/ssh/sshd_config befindet:

    sudo nano /etc/ssh/sshd_config
    
  3. Suchen und setzen Sie die folgenden Direktiven:

    # Stellen Sie sicher, dass dies auf yes gesetzt ist (normalerweise Standard)
    PubkeyAuthentication yes
    
    # Deaktivieren Sie Passwortanmeldungen
    PasswordAuthentication no
    
  4. Überprüfen Sie die Konfiguration vor dem Neustart:

    sudo sshd -t
    
  5. Starten Sie den SSH-Dienst neu, um die Änderungen zu übernehmen. Der Dienstname lautet bei RHEL-basierten Systemen üblicherweise sshd und bei Debian/Ubuntu ssh:

    sudo systemctl restart sshd
    # oder
    sudo systemctl restart ssh
    

Warnung: Bevor Sie die Passwortauthentifizierung deaktivieren, halten Sie eine funktionierende SSH-Sitzung offen und bestätigen Sie, dass eine zweite Anmeldung mit dem neuen Schlüssel funktioniert. Wenn der Neustart fehlschlägt oder der Schlüssel falsch ist, benötigen Sie Konsolen- oder Out-of-Band-Zugriff.

Nächste Schritte

Behandeln Sie SSH-Schlüssel nach Ihrer ersten schlüsselbasierten Anmeldung wie Produktionsanmeldeinformationen:

  • Generieren Sie ein eindeutiges Schlüsselpaar für jedes wichtige System oder jeden Dienst, auf den Sie zugreifen.
  • Überprüfen Sie regelmäßig die Datei authorized_keys auf kritischen Servern.
  • Entfernen Sie alte Schlüssel, wenn Personen die Rolle wechseln oder Maschinen ausgemustert werden.
  • Verwenden Sie ssh-add -t für kurzlebige Agentensitzungen auf gemeinsam genutzten Workstations.