📱 Erkannter Endgerättyp ⛱️ Tag und Nacht. Verbraucht keinen oder einen 🍪.
guest
Login 🧬 0 Ihre DNS in den Krei.se-DNS-Servern, führt zum Bio-Labor 🍪 1 Anzahl Ihrer gespeicherten Kekse, führt zur Keksdose

SSH-Agent 🕴️ als GUI

X-Session

use-ssh-agent in /etc/X11/Xsession.options auskommentieren, das started die X-Session mit dem ssh-agent damit er dort verfügbar ist - wollen wir hier aber nicht, wir wollen den tollen gcr-ssh-agent

Gnome-Keyring Daemon ssh beibringen:

gnome-keyring-daemon systemd USER-unit ändern (systemctl --user edit gnome-keyring-daemon für Vorlage), dort ist nur wichtig bei components --components="pkcs11,secrets,ssh" mit drin zu haben.

wir wollen also als override:

[Service]
ExecStart=/usr/bin/gnome-keyring-daemon --foreground --components="pkcs11,secrets,ssh" --control-directory=%t/keyring

Sollte dann so aussehen:

user@linux:~/ systemctl --user cat gnome-keyring-daemon
# /usr/lib/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
Restart=on-failure

[Install]
Also=gnome-keyring-daemon.socket
WantedBy=graphical-session-pre.target

# ---> /homes/user/.config/systemd/user/gnome-keyring-daemon.service.d/override.conf
[Service]
# needed to clear out all other ExecStart values
ExecStart=
ExecStart=/usr/bin/gnome-keyring-daemon --foreground --components="pkcs11,secrets,ssh" --control-directory=%t/keyring

SSH_AUTH_SOCK in systemd user services:

Für Systemd-user Services wie z.B. mounten von sshfs braucht man die Environment-Variablen im environment.d:

~/.config/environment.d/99-gcr-ssh-agent.conf

export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/gcr/ssh

Und für den User selbst ist wichtig Sie an DBUS weiterzugeben und im Terminal verfügbar zu haben:

~/.bashrc

# Braucht man für gnome-keyring unter Wayland
dbus-update-activation-environment --systemd DISPLAY
# Braucht man damit man im Terminal, etc. den korrekten Socket hat
export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/gcr/ssh

SSH-Agent Forwarding

Jetzt hat man aber das Problem, dass man mit ssh -A user@andererserver den weitergeleiteten Agenten verliert wenn man sich mit demselben Nutzer anmeldet (also das gleiche Homeverzeichnis hat) weil dann dieselbe .bashrc nochmal läuft.

Angenommen ich entsperre den SSH-Key auf meiner workstation und verbinde mich dann mit meinem Nutzer zu einem Server der denselben Nutzer über Kerberos/LDAP nutzt --> der lädt wieder SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/gcr/ssh und "vergisst" meinen weitergeleiteten agenten.

Wir ändern daher in .bashrc:

# nur überschreiben wenn die Sitzung keine ssh-verbindung ist
if [ -z "$SSH_CONNECTION" ]; then
    export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/gcr/ssh
    dbus-update-activation-environment --systemd DISPLAY
fi

# SSH_AUTH_SOCK ist jetzt
# /run/user/1234/gcr/ssh für lokal und
# /tmp/ssh-aBcDeFgHiJ/agent.1234567 für eine ssh-sitzung mit weitergeleitetem Agenten
# overwrite systemds user environment with whatever is now SSH_AUTH_SOCK
systemctl --user import-environment SSH_AUTH_SOCK

jetzt kann man in der SSH-Sitzung den Agenten nutzen und auch Systemd kennt ihn für mounts, etc:

user@andererserver:~# systemctl --user show-environment | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK=/tmp/ssh-aBcDeFgHiJ/agent.1234567

Systemd zeigt altes Env an

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 ssh-agent Socket und Service für diesen Nutzer abzuschalten.

Den Socket und Service für diesen User einfach "masken" (das schickt ihn auf /dev/null):

user@linux:~/ systemctl --user mask ssh-agent && systemctl --user mask ssh-agent.socket 

Alternativ:

systemctl --user disable ssh-agent.socket
systemctl --user stop ssh-agent.socket

Das meckert aber bei mir, daher Mask.

Hintergrund ändern. Verbraucht keinen oder einen 🍪.

Verknüpften Viewport öffnen

Sie sind leider kein Entwickler :(

FPS

Vertex-Count