从 systemd 脚本运行 gpg

从 systemd 脚本运行 gpg

我为 写了一个包装器rsync。它连接到我的主机并$HOME通过ssh.我用于gpg-agent验证ssh。当从终端模拟器调用时,我的脚本可以工作。它使用我的 pinentry 程序提示输入我的 gpg 密钥的密码,然后通过ssh.

现在我想在每次启动时调用它。我通常用systemd这个。我添加了以下内容$HOME/.config/systemd/user/backup.service

[Unit]
Description=Back up user files on startup
After=multi-user.target

[Service]
Type=oneshot
Requires=network-online.target
RemainAfterExit=false
ExecStart=/bin/backup.sh

[Install]
WantedBy=default.target

并启用其 via systemctl --user enable backup.service

脚本被执行,并且每个本地部分(读/写日志文件)都工作。但是,通过ssh使用pass或调用进行连接gpg不起作用。因为我从来没有收到输入密码的提示。

在启动gpg-agent期间从脚本调用它时如何工作?systemd

最小的例子backup.sh

#!/bin/bash
ssh [email protected]

gpg-agent.conf:

pinentry-program /usr/bin/pinentry-gnome3
enable-ssh-support
default-cache-ttl 86400
default-cache-ttl-ssh 86400
max-cache-ttl 86400
max-cache-ttl-ssh 86400

.zshrc:

GPG_TTY=$(tty)
export GPG_TTY
unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
  export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
gpgconf --launch gpg-agent

相关内容