我可以只输入一次gpg密码并解锁所有子密钥(签名,解密,身份验证)吗?
目前,我需要输入3次gpg密码(用于签名,解密和身份验证)。这很不方便。
我试图提出一个shell脚本。
#!/bin/bash
set -x
set -e
set +o history
signing_key=77BB3C48
encryption_key=CE998547
tempfile="$(mktemp)"
echo "test" > testfile
unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"
gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"
但不幸的是,这样,密码gnupg-agent不会缓存密码。这个可以解决吗?
系统信息:
- 当不使用该shell脚本时,gnupg-agent没有任何问题。当我在外壳中手动签名/解密文件时,pinentry要求输入两次密码,然后将其缓存直到重新启动。
- 使用Debian Wheezy。
- gpg版本:
dpkg -l | grep gnupg
ii gnupg 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement
ii gnupg-agent 2.0.22-3 i386 GNU privacy guard - password agent
ii gnupg-curl 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement (cURL)
ii gnupg2 2.0.22-3 i386 GNU privacy guard - a free PGP replacement (new v2.x)
我曾在gnupg-users邮件列表上询问过,但没有回复。
也许这个答案行得通吗?也许gpg-connect-agent
是必需的?
exec 3<<<"$passphrase"
甚至对我来说都是新的。。。