Могу ли я один раз ввести свой пароль gpg и разблокировать все мои дополнительные ключи (подпись, расшифровка, аутентификация)?
На данный момент мне нужно ввести свой пароль gpg три раза (для подписи, для расшифровки, для аутентификации). Это неудобно.
Я попытался придумать сценарий оболочки.
#!/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 не кеширует пароль. Это можно исправить?
Системная информация:
- Когда я не использую этот скрипт, у меня нет проблем с 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"
было ново даже для меня ... И я просто бросил награду в 250 повторений за ответ, который вы цитируете.