Czy mogę wprowadzić hasło gpg tylko raz i odblokować wszystkie moje klucze podrzędne (podpisywanie, deszyfrowanie, uwierzytelnianie)?
W tej chwili muszę trzy razy wpisać hasło gpg (w celu podpisania, odszyfrowania, uwierzytelnienia). Jest to niewygodne.
Próbowałem wymyślić skrypt powłoki.
#!/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"
Ale niestety w ten sposób hasła gnupg-agent nie buforują hasła. Czy można to naprawić?
Informacje o systemie:
- Kiedy nie używam tego skryptu powłoki, nie mam problemów z gnupg-agent. Kiedy ręcznie podpisuję / odszyfrowuję plik w powłoce, pinentry pyta o hasło dwukrotnie, a następnie buforuje je do ponownego uruchomienia.
- Korzystanie z Debian Wheezy.
- wersja 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)
Ja zapytałem na GnuPG listy dyskusyjnej użytkowników jakiś czas temu, ale nie ma odpowiedzi.
Być może ta odpowiedź zadziała? Być może gpg-connect-agent
jest to wymagane?
exec 3<<<"$passphrase"
był nowy nawet dla mnie ... I właśnie rzuciłem nagrodę w wysokości 250 powtórzeń za odpowiedź, którą zacytowałeś.