使用 systemd 启动 gpg-agent?

Mag*_*nus 5 gnupg systemd

我已经阅读了一些关于 systemd 的内容,但仍然无法弄清楚如何使用它gpg-agent在登录时自动启动。我认为我会使用systemctl --user,但构建 使gpg-agent.service我难倒。欢迎任何和所有指针。

小智 1

gpg-agent命令启动一个守护程序,但使用它的程序需要设置某些环境变量(GPG_AGENT_INFO和),以便它们知道如何与代理进行通信。GPG_TTY您必须以某种方式将这些内容从服务脚本传播到您的 shell。MANgpg-agent页面包含启动守护程序并将 shell 代码片段写入用户主目录中的文件的片段

gpg-agent --daemon --write-env-file "${HOME}/.gpg-agent-info"
Run Code Online (Sandbox Code Playgroud)

您可以将此行作为 shell 脚本放入并从服务文件中调用它

[Service]
Type=forking
ExecStart=script-file.sh
<...>
Run Code Online (Sandbox Code Playgroud)

.gpg-agent-info文件必须来自每个 shell。MAN 页面推荐

if [ -f "${HOME}/.gpg-agent-info" ]; then
  . "${HOME}/.gpg-agent-info"
  export GPG_AGENT_INFO
fi

GPG_TTY=$(tty)
export GPG_TTY
Run Code Online (Sandbox Code Playgroud)

在您的.profile文件中执行此操作。有关如何编写 systemd 服务文件的信息可以在 systemd.service 手册页中找到。