SSH (Secure Shell) ist weit verbreitet und quasi ein Standard für den sicheren Remote-Zugang zu Linux und anderen UNIX-artigen Systemen. Dank der SSH-Agent Integration lässt sich KeePassXC zur komfortablen Verwaltung von SSH-Schlüsseln verwenden. Verschiedene Szenarien werden unterstützt. Ich möchte hier kurz erläutern, wie man den privaten und öffentlichen SSH-Schlüssel in KeePassXC ablegen und wie man sich damit authentifizieren kann.
Einrichtung
Normalerweise ist auf einem Dektop-Linux bereits ein SSH Agent vorinstalliert. Das kann man einfach überprüfen:
$ ssh-add -l
The agent has no identities.
Wenn man diese Ausgabe (oder eine Liste von SSH-Schlüsseln) erhält ist alles bereit.
Nach der Installation von KeePassXC erstellt man zunächst eine KeePass-Datenbankdatei. In dem Einrichtungsdialog folgt man einfach den Anweisungen und vergibt der Datenbank ein sicheres™ Passwort.
Standardmäßig ist die SSH Agent Integration in KeePassXC deaktiviert. Man aktiviert sie über die Einstellungen (Zahnradsymbol in der Toolbar). Der folgende Screenshot zeigt im Detail, wie es gemacht wird.
Das wars auch schon mit den Vorbereitungen seitens KeePassXC. Jetzt brauchen wir einen SSH-Schlüssel.
SSH-Schlüssel erstellen
Also geht es erst einmal in die Konsole. Der SSH-Schlüssel wird wie folgt erstellt:
$ ssh-keygen -o -f keepassxc -C martin@keepassxc
Generating public/private ed25519 key pair.
Enter passphrase for "keepassxc" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in keepassxc
Your public key has been saved in keepassxc.pub
The key fingerprint is:
SHA256:F8nKK2iZZHfMX/LA/tdDFjgd0FmNfAN8VSLIf9r8Ooo martin@keepassxc
The key's randomart image is:
+--[ED25519 256]--+
| . .o+=.X|
| .o. ooBo|
| +. +.o|
| + o ..o.o |
| o . S = .=. .|
| o = . = =. oo |
| = . . o . oo |
| . . o o.o|
| E oo.o.|
+----[SHA256]-----+
Im Dateisystem liegen nun zwei Dateien:
keepassxc
(privater Schlüssel)keepassxc.pub
(öffentlicher Schlüssel).
KeePassXC-Eintrag
Jetzt haben wir alles, was wir brauchen, sodass wir einen Eintrag in KeePassXC erstellen und diesem die beiden Teilschlüssel hinzufügen können.
Über das Plus-Symbol in der KeePassXC-Toolbar wird ein neuer Eintrag erstellt. Diesem vergeben wir einen sinnvollen Namen und tragen als Passwort die zuvor in der Konsole festgelegte Passphrase ein.
Dem neuen Eintrag fügen wir nun den generierten SSH-Schlüssel keepassxc
als Anhang hinzu. Dies ist im Bereich Fortgeschritten möglich, zu dem man über das entsprechende Symbol in der linken Spalte kommt.
Weiter geht es im Bereich SSH-Agent. Hier wählt man unter Privater Schlüssel den gerade hinzugefügten Anhang aus. Im unteren Bereich ist der dazugehörige öffentliche Schlüssel zu sehen.
Die zuvor generierten Dateien keepassxc
und keepassxc.pub
können jetzt aus dem Dateisystem gelöscht werden.
Ich wähle an dieser Stelle außerdem die Option Key zum Agenten hinzufügen, wenn Datenbank geöffnet/entsperrt wird aus. Somit brauche ich gar nicht mehr daran zu denken, den SSH-Schlüssel verfügbar zu machen – das passiert von alleine.
Fortan macht also KeePassXC dem SSH Agent den (oder die – man kann beliebig viele Schlüssel hinterlegen) Schlüssel bekannt. Fertig. ssh-add -l listet nun den von KeePassXC verwalteten SSH-Schlüssel auf. Den öffentlichen Schlüssel kopiert man einmal mit dem Konsolenbefehl ssh-copy-id
auf die Remote-Maschinen und kann sich dann komfortabel per ssh
einloggen.
KeePassXC auf mehreren Geräten
Es mag aus Sicherheitsaspekten umstritten sein, aber: Bei mir liegt die (gut verschlüsselte) KeePassXC-Datenbank in der (meiner!) Nextcloud. Der Hauptvorteil für mich ist: Ich kann den oben eingerichteten SSH-Schlüssel damit überall verwenden, egal ob ich gerade am Desktop oder am Notebook arbeite. KeePassXC bewahrt den Schlüssel für mich sicher auf und stellt ihn dem SSH Agent zur Verfügung. Nextcloud macht die Datenbank wiederum auf allen Geräten verfügbar. Möchte ich den SSH-Schlüssel aus irgendeinem Grund ersetzen, brauche ich dies nur einmal zu machen; die anderen Rechner bekommen die Änderung ja automatisch mit.
Ich hatte auch schon überlegt, diese Funktion von KeePassXC zu nutzen. Dann ist das Thema aber doch wieder ein Vergessenheit geraten. Vielen Dank für die Erinnerung und für den tollen Artikel!
Coole Sache, direkt erfolgreich eingerichtet.
Vielen Dank für den Artikel! Interessant, damit hatte ich mich noch nie beschäftigt. Hintergrund: Ich nutze ssh-keys für automatisierte backups auf einem Server. Nun bin ich am überlegen, was genau die Vor- und Nachteile dieser Lösung sind - um besser zu verstehen, ob die Lösung für mich zweckmäßig wäre. KeePassXC muss vermutlich immer (mindestens einmal pro Session) freigeschaltet werden, damit es die ssh-Dateien bei Bedarf bereitstellen kann, oder?
Ich habe es so eingestellt, dass KeePassXC den Schlüssel dem SSH Agent beim Öffnen der Datenbank bereitstellt und auch wenn sie geschlossen wird nicht wieder entfernt. Das kann man also konfigurieren.
Ich nutze KeepassXC schon lange und muss gestehen, ich wusste gar nicht, dass es so etwas beherrscht. Für SSH-Verbindungen benutze ich aber auch MobaXterm, welches sich auch um die Schlüssel kümmert.
Vielen Dank für den Artikel! Schaltet KeepassXC eine bereits bestehende SSH-Agent integration aus? Das kann ich mir kaum vorstellen. Der Artikel geht leider darauf gar nicht ein.
Danke für die Anleitung. Hatte das schon mal probiert, funktionierte aber nicht. Mit diesem Anlauf hat es geklappt.