Могу ли я один раз ввести свой пароль 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
требуется?
shell-script
gpg
gpg-agent
adrelanos
источник
источник
exec 3<<<"$passphrase"
было ново даже для меня ... И я просто бросил награду в 250 повторений за ответ, который вы цитируете.Ответы:
Существует gnome-keyring-daemon и seahorse, которые делают управление ключами и паролями очень простым.
По сути, если вы используете gnome-keyring-daemon в качестве агента gpg, он может автоматически разблокировать ваши ключи GPG. Это достигается за счет поддержки набора ключей паролей, который содержит пароли для таких вещей, как веб-сайты, ключи GPG, ключи SSH и т. Д. Этот набор ключей паролей затем защищается собственным паролем. Таким образом, вы разблокируете его, и брелок для гнома разблокирует все остальное.
В качестве дополнительного бонуса, gnome-keyring-daemon имеет брелок для входа в систему, который, если пароль совпадает с вашим паролем пользователя, брелок автоматически разблокируется при входе в систему.
конфигурация
Как заставить это работать? Просто установите gnome-keyring-daemon и морского конька. Пакет должен выполнить всю конфигурацию системы за вас. Просто убедитесь, что вы не запускаете другого демона для ключей или агента GPG . Какой из них запускается последним, «выигрывает», и набор ключей gnome начинается в стеке PAM, поэтому очень рано.
Если ваши ключи GPG хранятся в нем
~/.gnupg
, он автоматически подберет их и будет действовать как агент GPG для них. То же самое касается ключей SSH, хранящихся в~/.ssh
В первый раз, когда вы попытаетесь использовать закрытый ключ, вы увидите диалоговое окно, которое выглядит следующим образом: (я запустил его с помощью простой командной строки
gpg -d myfile.gpg
).Просто выберите «Автоматически разблокировать этот брелок при каждом входе в систему».
Сейчас мы не говорили о морском коньке. Это потому, что это не строго необходимо. Все это было сделано с помощью обычного демона gnome-keyring-daemon. Однако с морским коньком вы можете просматривать и управлять всеми своими ключами и брелоками. И если вы используете централизованную аутентификацию (LDAP), вам нужно будет использовать ее при изменении пароля для входа в систему, чтобы также изменить пароль в связке ключей «вход» в соответствии с ней.
Другие пароли
Как упоминалось ранее, gnome-keyring-daemon также может хранить пароли веб-сайтов. В прошлый раз, когда я проверял, Chrome поддерживает это, а Firefox - нет. Однако есть одна хитрость, чтобы заставить это работать.
По умолчанию у вас будет 2 цепочки для ключей, цепочка для ключей входа в систему и цепочка для ключей по умолчанию. Брелок по умолчанию - это имя по умолчанию (отсюда и название). Но это отдельная связка ключей, поэтому она не разблокируется автоматически. В морском коньке, если вы щелкнете правой кнопкой мыши на брелке «логин», есть опция «установить по умолчанию». Выберите это, и он начнет привыкать к паролям. Лично я просто удаляю "по умолчанию" и использую "логин" для всего.
источник
sudo apt-get remove gnupg-agent
иsudo apt-get install gnome-keyring seahorse
. Затем создали файл/etc/X11/Xsession.d/999gnomekeyring
со следующим содержанием.eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK
(В противном случае gnome-keyring даже не запустится в KDE.) Теперь, когда я запускаюgpg -d myfile.gpg
, у меня спросят пароль, и он будет кеширован, но мне никогда не предлагалось это диалоговое окно./etc/X11/Xsession.d
. Это должно быть сделано в стеке PAM. Вы должны иметьsession optional pam_gnome_keyring.so auto_start
запись в одном или нескольких файлах в/etc/pam.d
. К сожалению, я не использую Debian, поэтому я не знаю, какой именно. Если этого нет, тогда это проблема./etc/X11/Xsession.d
,ps aux | grep gnome
показывает, что gnome-keyring-daemon не запускается. (Тем не менее, удалил его.)/usr/share/doc/libpam-gnome-keyring/README.Debian
ГоворитIf you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start
(новые строки удаляются самими комментариями). Сделал это, добавил/etc/pam.d/kdm
, перезапустил kdm. Нет загрузки агента, ни один не доступен.kdm
и вставляете это/etc/pam.d/kdm
, это должно было быть сделано. Единственное, что я могу предложить, если вы все еще хотите продолжить этот маршрут, это копаться в журналах. Извините за ложную надежду, думал, что это будет простым решением для вас.Я провел некоторое расследование, и результат меня удивил, но он прост:
При вызове этот путь
gpg
не общается сgpg-agent
вообще !gpg
способен делать все эти операции самостоятельно.Но если
gpg-agent
он даже не знает, что что-то произошло, он вряд ли узнает фразу-пароль, которую не знал раньше.источник
Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?
) Я надеюсь ввести парольgpg-agent
илиgpg-connect-agent
как-то возможно.