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

14

Я разработчик, и я обычно подписываю свой Git на мой ключ GPG. Я смог заставить GPG Agent работать правильно на 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 <[email protected]>"
    4096-bit RSA key, ID 8F700DA2, created 2016-04-05
    
    [master 1740961] blah
     1 file changed, 1 insertion(+)
    

Проблема заключается в следующем: каждый раз, когда я выполняю фиксацию, я снова запрашиваю свой пароль GPG.

То, что я хотел бы сделать, - настроить агента GPG для кэширования моего пароля на один полный день, поэтому его нужно вводить только один раз.

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

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

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

Теперь, из того, что я читал, это одно должно было сделать трюк после перезапуска gpg-agent, но это не так.

Итак, следующее: я определил файл ~/.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

Это также не влияет.

Я также пробовал различные методы блога и т. д., но ничего не работает. Может ли кто-нибудь дать мне несколько указаний на вещи, которые я могу пропустить?

    
задан rdegges 01.08.2016 в 03:18
источник

2 ответа

16

В дополнение к настройке времени кеширования в gpg-agent.conf , вы также должны убедиться, что GnuPG фактически взаимодействует с gpg-agent . GnuPG 2 и выше, как правило, не имеет ветви GnuPG 1. По умолчанию git использует двоичный файл gpg , который (на момент написания ответа) по-прежнему является GnuPG 1, а GnuPG 2 установлен как gpg2 для большинства систем.

В конце концов, у вас есть возможности:

ответ дан Jens Erat 01.08.2016 в 10:11
источник
0

В дополнение к вышеуказанному ответу вы также можете просто изменить значение gpg по умолчанию в вашей системе на gpg2 , а не gpg1 .

Если git config --global gpg.program gpg2 работает для вас, но вы не хотите оставлять это в своей конфигурации git (в моем случае, потому что я использую тот же конфиг на macOS), вы можете просто поменять значение gpg out по умолчанию.

Я последовал за гидом здесь , который был просто:

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

Это делает gpg1 старым двоичным кодом gpg и symlinks /usr/bin/gpg -> /usr/bin/gpg2 (с именем gnupg и приоритетом 50).

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

    
ответ дан gib 04.09.2017 в 20:32