Кешувати відразу всі паролі підрозділу gpg? Запобігти необхідність введення кількох gpg-паролів?


10

Чи можу я ввести свій 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-агентом. Коли я вручну підписую / розшифровую файл у оболонці, додаток запитує пароль двічі, а потім кешує його до перезавантаження.
  • Використання 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 деякий час тому, але відповіді не було.

Можливо, ця відповідь спрацювала б? Можливо, gpg-connect-agentце потрібно?


Я вражений: exec 3<<<"$passphrase"був для мене новим навіть ... І я просто кинув на суму 250 представників на відповідь, яку ви цитуєте.
Hauke ​​Laging

Відповіді:


3

Існує демон-gnome-keyring-демон та морський коник, що робить керування ключами та паролями дуже простим.

В основному, якщо ви використовуєте gnome-keyring-daemon як gpg-агент, він має можливість автоматично розблокувати ваші ключі GPG. Це робиться, підтримуючи введення паролів, що містить паролі до таких речей, як веб-сайти, GPG-ключі, SSH-ключі тощо. Потім цей пароль вводиться за допомогою власного пароля. Так ви розблокуєте його, а брелок з ключем gnome розблокує все інше.
Як додатковий бонус, gnome-keyring-daemon має брелок "login", який, якщо пароль відповідає вашому користувальницькому паролю, при вході в систему автоматично відмикається.


Конфігурація

Як змусити це працювати? Просто встановіть gnome-keyring-демон та морського коня. Пакет повинен робити всю конфігурацію системи за вас. Просто переконайтеся, що ви не запускаєте інший демон-бренд або агент GPG . Залежно від того, що починається останнім, "виграє", а брелоки gnome запускаються в стеку PAM, так надзвичайно рано.

Якщо ваші ключі GPG зберігаються ~/.gnupg, він автоматично підбирає їх і виступатиме в ролі агента GPG. Те саме стосується ключів SSH, що зберігаються в~/.ssh

Перший раз, коли ви спробуєте скористатися приватним ключем, ви отримаєте діалогове вікно, яке виглядає приблизно так: (Я запустив його простим командним рядком gpg -d myfile.gpg) розблокувати брелок
Просто виберіть "Автоматично розблокувати цю брелоку кожного разу, коли я ввійшов"

Зараз ми не дуже говорили про морського коня. Це тому, що це суворо не потрібно. Все це було зроблено лише за допомогою звичайного демон-гнома-брелока. Однак за допомогою морського коника ви можете переглядати та керувати всіма своїми ключами та брелоками. І якщо ви використовуєте централізовану автентифікацію (LDAP), вам потрібно буде скористатися нею, коли ви зміните пароль для входу, щоб також змінити пароль на "вхідному" ключі, щоб відповідати цьому.

морський коник - gpg ключі


Інші паролі

Як уже згадувалося раніше, gnome-keyring-демон може також зберігати паролі веб-сайту. Востаннє я перевіряв, чи підтримує хром це, але Firefox цього не робить. Однак є одна хитрість, щоб він працював.
За замовчуванням у вас будуть дві брелоки, брелок для входу в систему та брелок для замовчувань. "За замовчуванням" брелок є типовим (звідси назва). Але це окремий брелок, тому він не розмикається автоматично. Якщо морський коник, якщо ви клацніть правою кнопкою миші клавішу "вхід", є опція "встановити за замовчуванням". Виберіть це, і воно почне звикати до паролів. Я особисто просто видаляю "за замовчуванням" і використовую "логін" для всього.


Шкода, що я не користувач-гном. Я зробив 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( В іншому випадку брелок гном б навіть не почати в KDE.) Тепер, коли я біг gpg -d myfile.gpg, я буду ввести відповідний пароль , і він буде кешувати, але я ніколи не був викликаний з цим діалогом.
адреланос

(Це погано, тому що я повернувся з того місця, з якого я почав. Ключ підпису буде кешований окремо.) (Між лінією eval та експортом є нова лінія, тут неможливо з розміткою коментарів.)
adrelanos

Я також не використовую gnome для свого менеджера робочого столу. Це не потрібно. Gnome робить набагато більше, ніж просто їх менеджер на робочому столі. Вам не слід було нічого додавати /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показує , що гном-брелок-чорт не запускався. (Тим не менш, вилучив його.) /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(нові рядки видалено за допомогою коментарів se). Зробив це, додавши до /etc/pam.d/kdm, перезапустив kdm. Немає завантаження агента, немає.
адреланос

Я в збитку. Якщо ви користуєтеся kdmі вкладаєте його /etc/pam.d/kdm, це повинно було це зробити. Єдине, що я можу запропонувати, якщо ви все ще хочете продовжувати цей маршрут, - це копати колоди. Вибачте за помилкову надію, подумав, що це буде просте рішення для вас.
Патрік

0

Я провів кілька розслідувань, і результат мене дивує, але простий:

При виклику цей шлях 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це якось можливо.
адреланос
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.