systemdスクリプトでgpgを実行する

systemdスクリプトでgpgを実行する

のラッパーを作成しましたrsync。それは私のホストに接続し、$HOME認証にssh使用します。私のスクリプトは、ターミナルエミュレータから呼び出されたときに動作します。私のpinentryプログラムを使って私のgpgキーのパスワードを求めるプロンプトを出してください。gpg-agentsshssh

今度は起動するたびにそれを呼び出したいと思います。私は通常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

経由で有効にします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

関連情報