[arch-general] gpg-agent, ssh keys, and systemd --user

Robbie Smith zoqaeski at gmail.com
Wed Apr 10 09:21:18 EDT 2013


How can I get gpg-agent to work with ssh keys? The following script that 
I’ve put in /etc/profile.d sets it up, but I’d like to move my user 
daemons (such as gpg-agent) over to systemd --user.

$ cat gpg-agent.sh
#!/bin/sh

envfile="${HOME}/.gnupg/gpg-agent.env"
if test -f "$envfile" && kill -0 $(grep GPG_AGENT_INFO "$envfile" | cut 
-d: -f 2) 2>/dev/null; then
     eval "$(cat "$envfile")"
else
     eval "$(gpg-agent --daemon --enable-ssh-support --write-env-file 
"$envfile")"
fi
export GPG_AGENT_INFO

I’ve written the following user service, and it should do the same 
thing, but it doesn’t seem to work:

$ cat ~/.config/systemd/user/gpg-agent.service
[Unit]
Description=GnuPG private key agent
Wants=environment.target
Before=environment.target
IgnoreOnIsolate=true

[Service]
Type=forking
Environment=GPG_ENVFILE=%t/gpg-agent.info
ExecStart=/usr/bin/gpg-agent --daemon --enable-ssh-support 
--use-standard-socket --write-env-file ${GPG_ENVFILE}
ExecStartPost=/bin/sh -c "xargs systemctl --user set-environment < 
${GPG_ENVFILE}"
ExecStopPost=/bim/rm %t/gpg-agent.info
Restart=on-abort

[Install]
WantedBy=default.target

Both the script and the service file start gpg, create an environment 
file, and export the variables. But for some reason, gpg-agent doesn’t 
store keys or anything if run as a service. I don’t know why.

Can anyone help?



More information about the arch-general mailing list