use-ssh-agent
in /etc/X11/Xsession.options
auskommentieren.
gnome-keyring-daemon systemd USER-unit ändern (systemctl cat gnome-keyring-daemon für Vorlage)
~/.config/systemd/user/gnome-keyring-daemon.service
[Unit]
Description=GNOME Keyring daemon
Requires=gnome-keyring-daemon.socket
[Service]
Type=simple
StandardError=journal
#ExecStart=/usr/bin/gnome-keyring-daemon --foreground --components="pkcs11,secrets" --control-directory=%t/keyring
ExecStart=/usr/bin/gnome-keyring-daemon --foreground --components="pkcs11,secrets,ssh" --control-directory=%t/keyring
Restart=on-failure
[Install]
Also=gnome-keyring-daemon.socket
WantedBy=graphical-session-pre.target
~/.bashrc
# Braucht man für gnome-keyring unter Wayland
dbus-update-activation-environment --systemd DISPLAY
Den SSH_AUTH_SOCK kann man überall so lassen, wenn er doch irgendwo manuell gesetzt werden muss: SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/gcr/ssh
Z.B. für mounts in systemd user scope:
~/.config/systemd/user/environment.d/gcr-ssh-agent.conf
export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/gcr/ssh
Wenn systemctl --user show-environment
noch den alten run/openssh_agent anzeigt kann man das versuchen in .config/environment.d zu setzen, es ist aber einfacher den Socket für diesen Nutzer abzuschalten
systemctl --user disable ssh-agent.socket
systemctl --user stop ssh-agent.socket
Alternativ wer es versuchen will
user@linux:~/ cat .config/environment.d/99-ssh-agent.conf
SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/gcr/ssh
Wird aber sicherlich wieder von ssh_agent überschrieben, daher lieber deaktivieren.
Wer den Socket nicht deaktivieren will, kann auch einen override erstellen:
user@linux:~/ systemctl --user edit ssh-agent.socket
dort über der Linie einfügen
[Socket]
ExecStartPost=
ExecStopPre=
Anschliessend hat man diese config:
[user@linux ~]$ systemctl --user cat ssh-agent.socket
# /usr/lib/systemd/user/ssh-agent.socket
[Unit]
Description=OpenSSH Agent socket
Documentation=man:ssh-agent(1)
Before=graphical-session-pre.target
[Socket]
SocketMode=0600
ListenStream=%t/openssh_agent
ExecStartPost=/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=%t/openssh_agent <-- überschreibt jedesmal systemctl --user show-environment
ExecStopPre=/usr/bin/systemctl --user unset-environment SSH_AUTH_SOCK
[Install]
WantedBy=sockets.target
# /home/user/.config/systemd/user/ssh-agent.socket.d/override.conf
[Socket]
ExecStartPost=
ExecStopPre=