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