Wer viele Server oder Git-Repositories betreut, kennt das Problem: SSH-Schlüssel liegen oft unverschlüsselt im Home-Verzeichnis unter ~/.ssh/. Selbst wenn sie mit einer Passphrase geschützt sind, verbleiben sie nach der ersten Nutzung häufig für die gesamte Session unverschlüsselt im Arbeitsspeicher des SSH-Agenten.
Eine elegante Alternative ist die Zentralisierung aller SSH-Schlüssel in KeePassXC. Der private Schlüssel wird als verschlüsselter Anhang direkt in der Passwort-Datenbank gespeichert und nur dann dynamisch an den SSH-Agenten übergeben, wenn die Datenbank geöffnet ist. Wird KeePassXC gesperrt, verschwinden die Schlüssel sofort wieder aus dem Arbeitsspeicher.
In dieser Anleitung geht es Schritt für Schritt darum wie neue SSH-Schlüssel erstellt werden, auf den Server übertragen werden, wie man sie in KeePassXC integriert und anschließend sicher von der Festplatte löscht.
Voraussetzungen
- Linux-Distribution: z. B. Ubuntu 24.04 LTS oder Debian
- KeePassXC: Installierte Version mit aktivierter SSH-Agent-Integration (Einstellungen -> SSH-Agent -> SSH-Agent-Integration aktivieren)
- OpenSSH-Tools:
ssh-keygenundssh-copy-id(Standard unter Linux)
Neues SSH-Schlüsselpaar im Terminal generieren
Erstellen Sie zunächst ein modernes und sicheres ED25519-Schlüsselpaar.
ssh-keygen -t ed25519 -C "admin@example.com" -f ~/.ssh/id_ed25519_server
Tipp: Man kann bei der Erstellung optional eine Passphrase vergeben. Wenn Sie diese im KeePassXC-Eintrag im Passwort-Feld hinterlegen, entsperrt KeePassXC den Schlüssel beim Laden automatisch im Hintergrund.
Dieser Befehl erzeugt zwei Dateien in Ihrem ~/.ssh/-Ordner:
id_ed25519_server(Privater Schlüssel)id_ed25519_server.pub(Öffentlicher Schlüssel)
Öffentlichen Schlüssel auf den Zielserver übertragen
Bevor der private Schlüssel lokal gelöscht wird, kopieren Sie den öffentlichen Schlüssel (.pub) auf den Zielserver:
ssh-copy-id -i ~/.ssh/id_ed25519_server.pub -p 2222 user@192.0.2.100
(Port, Benutzernamen und die IP-Adresse an die Umgebung anpassen).
Verbindung testen:
ssh -p 2222 -i ~/.ssh/id_ed25519_server user@192.0.2.100
Privaten Schlüssel in KeePassXC importieren
KeePassXC öffnen und folgende Schritte ausführen:
- Eintrag erstellen: Erstellen Sie einen neuen Eintrag für Ihren Server (z. B. SSH – Webserver).
- Passphrase speichern: Falls Sie in Schritt 1 eine Passphrase vergeben haben, tragen Sie diese in das Feld Passwort des Eintrags ein.
- Schlüssel anhängen:
- Wechseln Sie in der linken Seitenleiste des Eintrags auf Anhänge.
- Klicken Sie auf Anhang hinzufügen und wählen Sie die private Schlüsseldatei
~/.ssh/id_ed25519_serveraus. (Verwenden Sie nicht die.pub-Datei).
- SSH-Agent konfigurieren:
- Wechseln Sie links auf den Reiter SSH-Agent.
- Wählen Sie bei Privater Schlüssel die Option Anhang und wählen Sie
id_ed25519_server. - Aktivieren Sie die Kontrollkästchen:
- Schlüssel beim Öffnen der Datenbank zum Agenten hinzufügen
- Schlüssel beim Sperren der Datenbank aus dem Agenten entfernen
- Speichern: Speichern Sie den Eintrag ab.
Lokalen privaten Schlüssel auf der Festplatte löschen
Da der private Schlüssel nun sicher verschlüsselt in Ihrer KeePassXC-Datenbank liegt, wird die unverschlüsselte Datei auf der Festplatte nicht mehr benötigt.
rm ~/.ssh/id_ed25519_server
(Die öffentliche Datei id_ed25519_server.pub können Sie als Referenz behalten oder ebenfalls löschen).
Schritt 5: Funktions- und Lifecycle-Test
Um zu überprüfen, ob KeePassXC den Schlüssel korrekt verwaltet:
- Datenbank entsperren: Öffnen Sie KeePassXC.
- Agent abfragen: Prüfen Sie im Terminal, ob der Schlüssel bereitsteht:
ssh-add -l
Ergebnis: Der Fingerprint Ihres ED25519-Schlüssels wird aufgeführt.
3. SSH-Verbindung herstellen: Verbinden Sie sich ohne Angabe einer Schlüsseldatei:
ssh -p 2222 user@192.0.2.100
Ergebnis: Der Login gelingt sofort ohne Passphrase-Abfrage.
4. Sperr-Test: Sperren Sie Ihre KeePassXC-Datenbank (Strg + L) und führen Sie erneut ssh-add -l aus.
Ergebnis: Es erscheint die Meldung The agent has no identities.. Der Schlüssel ist nicht mehr im System verfügbar.
Mit dieser Methode kann man eine gute Sicherheit mit hoher Benutzerfreundlichkeit kombinieren. Auf dem System verbleiben keine unverschlüsselten privaten SSH-Schlüssel und der Zugriff ist an den Entsperr-Zustand der KeePassXC-Datenbank gekoppelt.