Я - разработчик, и я обычно подписываюсь, мой Мерзавец фиксирует с моим ключом GPG. Я смог получить Агент GPG, работающий правильно над OSX так, чтобы он только попросил у меня моего пароля однажды в день, но у меня есть проблемы при получении того же самого, работающего над Ubuntu 16.04.
Вот то, что я делаю:
Я затем иду для фиксации их (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 для кэширования моего пароля в течение 1 целого дня, таким образом, он только должен быть введен однажды.
Я прочитал тонны документации и сообщений в блоге, и вот то, что я попробовал до сих пор...
Во-первых, я изменил мой ~/.zshrc
файл (я использую zsh) для установки следующего:
# GPG Agent
export GPG_TTY=$(tty)
export GPGKEY=8F700DA2
Теперь, от того, что я считал, это одно должно добиться цели после перезапуска gpg-агента, но он не делает.
Так, следующая вещь, которую я сделал, была, я определил a ~/.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
Это также не имеет никакого эффекта.
Я также попробовал различные методы блога, и т.д., но ничто, кажется, не работает. Кто-то может дать мне некоторые подсказки к вещам, которые я мог бы пропускать?
В дополнение к установке времен кэша в gpg-agent.conf
, также необходимо удостовериться, что GnuPG на самом деле взаимодействует через интерфейс gpg-agent
. GnuPG 2 и вверх обычно делает, ответвление GnuPG 1 не делает. Мерзавцем по умолчанию использует gpg
двоичный файл, который (во время записи этого ответа) все еще является GnuPG 1, в то время как GnuPG 2 установлен как gpg2
в большинстве систем.
В конце, Вы имеете к возможностям:
настроенный мерзавец для использования gpg2
путем изменения конфигурации мерзавца:
git config --global gpg.program gpg2
gpg
(GnuPG 1) для использования gpg-agent
путем добавления use-agent
к gpg.conf
В дополнение к вышеупомянутому ответу можно также просто изменить значение по умолчанию gpg
в системе к gpg2
, а не gpg1
.
, Если git config --global gpg.program gpg2
работы для Вас, но Вы не хотите оставлять это в своей конфигурации мерзавца (в моем случае, потому что я использую ту же конфигурацию на 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 (текущая стабильная версия Debian) наборы gpg2
как значение по умолчанию gpg
похожим способом, таким образом, у Вас не должно быть слишком многих проблем.