🔐 SSH-Anmeldung mit KeePassXC
Sichere und komfortable SSH-Anmeldung mit KeePassXC
Jeder Admin, der regelmäßig per SSH auf einen Server zugreift, kennt es:
Am liebsten nutzt man SSH-Keys – sicher, bequem und (wenn man ehrlich ist) oft auch ganz ohne zusätzliches Passwort.
Aber: So komfortabel ein passwortloser Login mit SSH-Key auch ist – ein zusätzlicher Schutz durch ein Passwort erhöht die Sicherheit enorm.
Hier kommt KeePassXC ins Spiel.
Mit dem integrierten SSH-Agent lässt sich ein starkes, sicheres Setup einrichten – und das ganz ohne Komfortverlust:
🔐 Vorteile
- Der private SSH-Key ist sicher verschlüsselt in KeePassXC gespeichert
- Der Key wird nur geladen, wenn die Datenbank entsperrt ist
- Ohne Zugriff auf die Datenbank ist keine SSH-Anmeldung möglich
- KDE-Integration per Wrapper: startet KeePassXC automatisch mit aktiviertem SSH-Agent
- Funktioniert zuverlässig ohne systemd – über Terminal und KDE-Menü gleichermaßen
- Keine manuelle Pfadanpassung nötig, die SSH-Agent-Erkennung erfolgt automatisch
Mit dieser Kombination aus Sicherheit und Komfort macht der SSH-Zugang gleich doppelt Spaß –
ganz besonders für „Bequeme“ wie mich.
SSH-Zugang ohne Passwort – sicher gesteuert über KeePassXC
Idee und Quelle: Linux Guides Admin
KeePassXC SSH-Agent: SSH-Schlüssel mit dem Passwortmanager verwalten
Unter Linux Manjaro (Zetar) mit KDE Plasma nutze ich KeePassXC 2.7.10 (aktuelle Version Stand November 2025), installiert über
sudo pacman -S --needed keepassxc
um mich per SSH ohne Passwortabfrage mit meinem VPS zu verbinden:
ssh -p <SSH_PORT> <SSH_USER>@<SERVER_IP>
💡 Hinweis
Wenn du KeePassXC aus Flathub (Flatpak) nutzt:flatpak install flathub org.keepassxc.KeePassXCist das Verhalten beim SSH-Agenten eingeschränkt, weil Flatpak-Anwendungen in einer Sandbox laufen und dadurch standardmäßig keinen Zugriff auf System-Sockets wie
$SSH_AUTH_SOCKhaben.Lösung: Flatpak-Zugriff auf den SSH-Agent erlauben:
flatpak override --socket=ssh-auth org.keepassxc.KeePassXCWenn du YubiKey und SSH-Agent zusammen nutzen willst:
flatpak override --device=all --socket=ssh-auth org.keepassxc.KeePassXC
--device=all→ Zugriff auf USB-Geräte (z.B. YubiKey, Nitrokey)--socket=ssh-auth→ Zugriff auf den laufenden SSH-Agenten
Mein starkes Setup
🔐 Der private SSH-Key ist sicher verschlüsselt in KeePassXC gespeichert
🔒 Der Schlüssel wird nur geladen, wenn die KeePassXC-Datenbank entsperrt ist
🧠 Ohne Zugriff auf die Datenbank ist keine passwortlose SSH-Anmeldung möglich
🖥️ KeePassXC wird über das KDE-Menü per Wrapper gestartet und nutzt automatisch den SSH-Agent
1) Neuen SSH-Key mit Passwort erstellen
ssh-keygen -t ed25519 -C "keepassxc"
Dann kommt folgender Dialog:
Bei Enter file in which to save the key (<HOME>/.ssh/id_ed25519):
Hier kannst du einfach den Pfad und Dateinamen eintippen, z.B.:
<HOME>/.ssh/id_keepassxc
Drücke dann ENTER, und der Key wird unter diesem Namen erstellt.
Danach wirst du nach einem Passwort für den Key gefragt – generiere den z.B. mit KeePassXC.
ssh-keygen -t ed25519 -C "keepassxc"
Hier die Konsolenausgabe:
Generating public/private ed25519 key pair.
Enter file in which to save the key (<HOME>/.ssh/id_ed25519): <HOME>/.ssh/id_keepassxc
Enter passphrase for "<HOME>/.ssh/id_keepassxc" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in <HOME>/.ssh/id_keepassxc
Your public key has been saved in <HOME>/.ssh/id_keepassxc.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyy keepassxc
The key's randomart image is:
+--[ED25519 256]--+
| oo+=**+ |
| o =.o+*. |
| . E o.+.oo |
| . . oo . |
| . o S .+ . |
| . + == + |
| +.o= o |
| .o.oo.* |
| .ooo.o.o |
+----[SHA256]-----+
2) Key in KeePassXC einfügen
Starte KeePassXC und öffne deine Datenbank:
keepassxc &
- Erstelle oder bearbeite einen Eintrag in KeePassXC
- Titel:
SSH-Key - Benutzername:
<SSH_USER> - Passwort-Feld: Trage hier das Passwort deines SSH-Keys ein
- Reiter Fortgeschritten → privaten SSH-Schlüssel (
id_keepassxc) als Anhang hinzufügen - Reiter SSH-Agent → unter „Privater Schlüssel“ den Anhang
id_keepassxcauswählen - „Key zum SSH-Agenten hinzufügen, wenn Daten geöffnet/entsperrt wird“: An
- „Key zum SSH-Agenten entfernen, wenn Daten geschlossen/gesperrt wird“: An
Diese Methode hat den Vorteil, dass der private Schlüssel innerhalb der KeePassXC-Datenbank gespeichert ist – sicher und portabel.
Test: Läuft bereits ein SSH-Agent?
echo $SSH_AUTH_SOCK
Beispielausgabe:
/tmp/ssh-XXXXXXWHey1A/agent.4711
Wenn das funktioniert, ergänze am Ende deiner ~/.zshrc oder ~/.bashrc
(im weiteren Verlauf wird ~/.zshrc verwendet; passe das bei Bedarf an):
nano ~/.zshrc
# DISPLAY/XAUTHORITY setzen – nötig für grafische Sitzungen (z.B. KDE, Wayland, SSH-Forwarding)
# Stellt sicher, dass KeePassXC im richtigen X-/Wayland-Kontext startet, auch bei nohup oder Autostart
export DISPLAY=${DISPLAY:-:0}
export XAUTHORITY=${XAUTHORITY:-$HOME/.Xauthority}
# SSH-Agent automatisch starten (maximal robust)
if [ -z "$SSH_AUTH_SOCK" ] || ! [ -S "$SSH_AUTH_SOCK" ] || ! ps -p "$SSH_AGENT_PID" > /dev/null 2>&1; then
eval "$(ssh-agent -s)" > /dev/null
fi
export SSH_AUTH_SOCK
# Alias: KeePassXC über eigenes Skript starten (mit SSH-Agent-Zugriff)
alias kp="nohup $HOME/bin/keepassxc-launcher.sh > /dev/null 2>&1 &"
# Prüfen mit: ssh-add -L
Terminal neu starten oder:
source ~/.zshrc
Das prüft, ob bereits ein SSH-Agent läuft, und startet nur dann einen neuen, wenn keiner aktiv ist.
KeePassXC Wrapper
Optional: Der Qt6-Workaround wird nur benötigt, solange KeePassXC noch keine vollständige Qt6-Unterstützung bietet.
nano ~/bin/keepassxc-launcher.sh
Inhalt:
#!/bin/bash
# Qt6-Workaround + automatische SSH-Agent-Erkennung für KeePassXC
# Qt-Einstellungen (Qt5 statt Qt6 verwenden)
export QT_QPA_PLATFORM=xcb
export QT_QPA_PLATFORMTHEME=qt5ct
export QT_STYLE_OVERRIDE=Breeze # oder Fusion
# export QT_DEBUG_PLUGINS=1 # nur bei Bedarf aktivieren
# Wenn kein SSH-Agent läuft, starte einen neuen
if [ -z "$SSH_AUTH_SOCK" ] || ! [ -S "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)"
fi
# Optional: SSH_AUTH_SOCK exportieren für spätere Shells (z.B. debug)
echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK"
# KeePassXC starten
exec keepassxc "$@"
Skript ausführbar machen:
chmod +x ~/bin/keepassxc-launcher.sh
KeePassXC starten:
~/bin/keepassxc-launcher.sh &
oder über den Alias:
kp
Test:
echo $SSH_AUTH_SOCK
ssh-add -L
KDE Autostart (grafisch)
KDE lädt .zshrc nicht automatisch – Lösung:
mkdir -p ~/.config/plasma-workspace/env
nano ~/.config/plasma-workspace/env/ssh-agent.sh
Inhalt:
#!/bin/sh
if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)"
export SSH_AUTH_SOCK
export SSH_AGENT_PID
fi
ausführbar machen:
chmod +x ~/.config/plasma-workspace/env/ssh-agent.sh
→ Wird bei KDE-/Wayland-Sitzungen automatisch geladen.
3) Privaten Key sicher entfernen – öffentlichen Key auf VPS verwenden
Da der private Schlüssel bereits als Anhang in KeePassXC gespeichert ist, kannst du ihn sicher löschen:
rm <HOME>/.ssh/id_keepassxc
rm <HOME>/.ssh/id_keepassxc.pub # optional
Wichtig: Nur löschen, wenn der Key in KeePassXC funktioniert!
Auf dem VPS wird nur der öffentliche Key benötigt.
Falls noch nicht vorhanden:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Den öffentlichen Key mit ssh-add -L ausgeben und anschließend einfügen:
echo "ssh-ed25519 Dein-öffentlicher-KEY keepassxc" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Ersetze Dein-öffentlicher-KEY keepassxc durch deinen tatsächlichen Key.
💡 Tipp: Den öffentlichen Schlüssel kannst du auch direkt aus KeePassXC abrufen.
KDE-Menüeintrag
Im KDE-Menü den Programmpfad setzen auf:
<HOME>/bin/keepassxc-launcher.sh
KeePassXC: Werkzeuge → Einstellungen → SSH-Agent → „SSH-Agent-Integration aktivieren“:
... habe fertig 😃
