Як я можу змусити агента GPG кешувати свій пароль?


21

Я розробник, і я зазвичай підписую свої Git зобов’язані за допомогою мого ключа GPG. Мені вдалося змусити GPG-агента належним чином працювати на OSX, так що він запитує мене лише один раз на день, але у мене виникають проблеми з тим же, що працює над Ubuntu 16.04.

Ось що я роблю:

  • У мене налаштування GPG-ключів / і т.д.
  • Я в каталозі Git.
  • Я додаю кілька файлів до Git.
  • Потім я переходжу до них ( git commit), і отримаю запит пароля GPG, який виглядає приблизно так:

    $ git ci
    
    You need a passphrase to unlock the secret key for
    user: "Randall Degges <r@rdegges.com>"
    4096-bit RSA key, ID 8F700DA2, created 2016-04-05
    
    [master 1740961] blah
     1 file changed, 1 insertion(+)
    

Проблема полягає в тому, що кожного разу, коли я виконую зобов’язання, мені знову пропонується пароль для GPG.

Що я хотів би зробити, це налаштувати GPG Agent на кешування мого пароля протягом 1 повного дня, тому його потрібно вводити лише один раз.

Я прочитав багато документації та публікацій в блогах, і ось, що я спробував поки що ...

Спочатку я змінив свій ~/.zshrcфайл (використовую zsh), щоб встановити наступне:

# GPG Agent
export GPG_TTY=$(tty)
export GPGKEY=8F700DA2

Тепер, з того, що я прочитав, цей лише сам повинен зробити трюк після перезавантаження gpg-агента, але це не так.

Отже, наступне, що я зробив - це визначити ~/.gnupg/gpg-agent.confфайл, як пояснено на man gpg-agentсторінці:

# Set the default cache time to 1 day.
default-cache-ttl       86400
default-cache-ttl-ssh   86400

# Set the max cache time to 30 days.
max-cache-ttl           2592000
max-cache-ttl-ssh       2592000

Це також не впливає.

Я також пробував різні методи блогу тощо, але, здається, нічого не працює. Чи може хтось дати мені вказівки на речі, які мені можуть бути відсутні?

Відповіді:


24

На додаток до встановлення часу кешу gpg-agent.conf, ви також повинні переконатися, що GnuPG насправді взаємодіє gpg-agent. GnuPG 2 і вище зазвичай є, але гілка GnuPG 1 - ні. За замовчуванням git використовує gpgдвійковий код, який (на момент написання цієї відповіді) все ще є GnuPG 1, тоді як GnuPG 2 встановлений як і gpg2в більшості систем.

Зрештою, у вас є дві можливості:


0

На додаток до вищевказаної відповіді, ви можете просто змінити типовий стан gpgу своїй системі, gpg2а не gpg1.

Якщо git config --global gpg.program gpg2працює для вас, але ви не хочете залишати це у своєму git config (у моєму випадку, тому що я використовую той самий конфігуратор у macOS), ви можете просто поміняти за замовчуванням gpg.

Я пішов за керівництво тут , який був тільки що :

$ sudo mv /usr/bin/gpg /usr/bin/gpg1
$ sudo update-alternatives --verbose --install /usr/bin/gpg gnupg /usr/bin/gpg2 50

Це робить gpg1старі gpgбінарні та символьні посилання /usr/bin/gpg -> /usr/bin/gpg2(з ім'ям gnupg та пріоритетом 50).

Зміна за замовчуванням gpgтеоретично може зламати деякі пакети у вашій системі, але Debian Stretch (поточна стабільна версія Debian) встановлюється gpg2за замовчуваннямgpg аналогічно, тому у вас не повинно виникнути занадто багато проблем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.