• KeepassXC as Key Ring Manager for Minimal DEs & WMs
  • _ __ __ __ ___
  • | |/ / ___ ___ _ __ __ _ ___ ___ \ \/ / / __|
  • | ' < / -_) / -_) | '_ \ / _` | (_-< (_-< > < | (__
  • |_|\_\ \___| \___| | .__/ \__,_| /__/ /__/ /_/\_\ \___|
  • |_|
  • __ _ ___
  • / _` | (_-<
  • \__,_| /__/
  • _ __
  • | |/ / ___ _ _
  • | ' < / -_) | || |
  • |_|\_\ \___| \_, |
  • |__/
  • ___ _
  • | _ \ (_) _ _ __ _
  • | / | | | ' \ / _` |
  • |_|_\ |_| |_||_| \__, |
  • |___/
  • __ __
  • | \/ | __ _ _ _ __ _ __ _ ___ _ _
  • | |\/| | / _` | | ' \ / _` | / _` | / -_) | '_|
  • |_| |_| \__,_| |_||_| \__,_| \__, | \___| |_|
  • |___/
  • __
  • / _| ___ _ _
  • | _| / _ \ | '_|
  • |_| \___/ |_|
  • __ __ _ _ _
  • | \/ | (_) _ _ (_) _ __ __ _ | |
  • | |\/| | | | | ' \ | | | ' \ / _` | | |
  • |_| |_| |_| |_||_| |_| |_|_|_| \__,_| |_|
  • ___ ___
  • | \ | __| ___
  • | |) | | _| (_-<
  • |___/ |___| /__/
  • __
  • / _|___
  • > _|_ _|
  • \_____|
  • __ __ __ __
  • \ \ / / | \/ | ___
  • \ \/\/ / | |\/| | (_-<
  • \_/\_/ |_| |_| /__/
  • ╔─*──*──*──*──*──*──*──*──*──*──*──*──*──*──*──*──*──*──*──╗
  • ║1 .................................................. 1║
  • ║2* .................................................. *2║
  • ║3 .................................................. 3║
  • ║1 ................Posted: 2025-10-15................ 1║
  • ║2* Tags: sysadmin linux security debian window_maker *2║
  • ║3 .................................................. 3║
  • ║1 .................................................. 1║
  • ╚──────────────────────────────────────────────────────────╝
  • Use KeePassXC as your Key Ring Manager in non-GNOME/KDE big DE setups. For
  • example, I use it with Window Maker (see my post)[1].
  • This is how to use KeePassXC as:
  • - your SSH key manager
  • - your Secret Service (org.freedesktop.secrets)
  • - without GNOME, KDE, or keyring daemons
  • The goal: One stable ssh-agent socket. Everything talks to it. KeePassXC loads
  • keys into it. The socket to survive reboots.
  • No popups. No race conditions. No broken SSH.
  • ## 1. Create a systemd user ssh-agent
  • Edit `~/.config/systemd/user/ssh-agent.service`:
  • ```
  • [Unit]
  • Description=OpenSSH SSH agent
  • [Service]
  • Type=simple
  • # Clean up a stale socket after crashes/reboots
  • ExecStartPre=/usr/bin/rm -f %t/ssh-agent.socket
  • # Bind a fixed, predictable path in the user runtime dir (%t == /run/user/$UID)
  • ExecStart=/usr/bin/ssh-agent -D -a %t/ssh-agent.socket
  • [Install]
  • WantedBy=default.target
  • ```
  • Enable it:
  • ```
  • systemctl --user daemon-reload
  • systemctl --user enable --now ssh-agent.service
  • ```
  • Your agent now lives at:
  • ```
  • /run/user/<UID>/ssh-agent.socket
  • ```
  • NOTE: `<UID>` is probably `1000`.
  • ## 2. Export SSH_AUTH_SOCK everywhere
  • Create: ~/.config/environment.d/10-ssh-agent.conf
  • ```
  • SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/ssh-agent.socket
  • ```
  • Also force it in zsh (important for minimal WMs): Put this at the very top of
  • ~/.zshrc
  • ```
  • export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/ssh-agent.socket"
  • ```
  • This prevents old or broken agents from hijacking your shell.
  • ## 3. Tell KeePassXC to use that socket
  • KeepassXC's SSH Agent Settings
  • KeePassXC -> Settings -> SSH Agent
  • Enable:
  • - SSH Agent integration
  • Set:
  • - SSH_AUTH_SOCK override: /run/user/1000/ssh-agent.socket (use your UID)
  • KeePassXC is now a client of the real agent.
  • ## 4. Enable Secret Service (Linux keyring)
  • KeepassXC's Secret Service Settings
  • KeePassXC -> Settings: Enable "Freedesktop.org Secret Service integration"
  • Open your database: Database Settings -> Secret Service Integration Choose a
  • group to expose.
  • KeePassXC now replaces:
  • - gnome-keyring
  • - kwallet
  • - gcr
  • ## 5. Verify
  • You'll likely want to logout/login.
  • ```
  • echo $SSH_AUTH_SOCK
  • ssh-add -l
  • ```
  • You should see:
  • ```
  • /run/user/UID/ssh-agent.socket
  • ```
  • ...and your keys listed.
  • Don't forget to check the box to add a key to the keyring for the respective ssh
  • key entries in KeepassXC!
  • If you have any troubles, it may just be that another keyring manager is being
  • annoying. I found Gnoe's keyring manager was such a hinderence I uninstalled it.
  • ## Caveats
  • You might still get prompted by `gpg-agent`, this is a separate subsystem.
  • ## Footnotes
  • [1]: Window Maker (see my post): /phlog/window-maker.gopher.txt