Git не видит gpg-ключ как секретный, даже если он есть, как мне это исправить?

#git #gnupg #gpg-signature

#git #gnupg #gpg-подпись

Вопрос:

Итак, кажется, что мой gpg-ключ секретный, но когда я пытаюсь подписать свои коммиты в git, он не распознается как секретный. Я в полной растерянности, почему это так. Я полагаю, что у меня все настроено правильно, но мои знаки фиксации не работают. Я делаю что-то не так? Заранее спасибо за любую помощь.

 [brad@reason entry-criteria-test]$ gpg --list-secret-keys --keyid-format LONG
/home/brad/.gnupg/secring.gpg
-----------------------------
sec   4096R/15980D34B4EED3FA 2019-03-11
uid                          Brad <brad@work.com>
ssb   4096R/3B437BF0F7366F6C 2019-03-11

[brad@reason entry-criteria-test]$ git config user.signingkey 15980D34B4EED3FA
[brad@reason entry-criteria-test]$ git config --global user.signingkey 15980D34B4EED3FA
[brad@reason entry-criteria-test]$ git commit -S -m "testing signed commit"
gpg: key B4EED3FA: secret key without public key - skipped
gpg: skipped "15980D34B4EED3FA": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object
[brad@reason entry-criteria-test]$ git config -l
user.name=Brad
user.email=brad@work.com
user.signingkey=15980D34B4EED3FA
color.ui=true
push.default=simple
commit.gpgsign=true
gpg.program=gpg2
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=git@github.work.com:entry-criteria-test.git
remote.origin.fetch= refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.issue-00142.remote=origin
branch.issue-00142.merge=refs/heads/issue-00142
branch.issue-00144.remote=origin
branch.issue-00144.merge=refs/heads/issue-00144
commit.gpgsign=true
user.signingkey=15980D34B4EED3FA
  

Ответ №1:

Проблема заключалась в:

 gpg.program=gpg2
  

Несмотря на то, что у меня установлена gpg 2.2.13, git все еще хочет использовать gpg. Это имеет смысл, поскольку все команды, которые я использовал выше для gnupg, используют gpg, а не gpg2. Итак, если у вас возникла эта проблема, проверьте, отличаются ли ваши ключи gpg2 и gpg.

 gpg --list-secret-keys --keyid-format LONG
gpg2 --list-secret-keys --keyid-format LONG
git config -l
  

Они отличаются? Соответствует ли правильный ключ из правильного gpg вашей конфигурации git?

Комментарии:

1. Это сводило меня с ума. И действительно, git config --global gpg.program gpg2 проблема решена (хотя выходные данные из gpg совпадали с выводами из gpg2 ).

2. Спасибо, решил мою проблему; Я предполагаю, что я, должно быть, где-то получил обновление (предыдущий ключ работал нормально) и не заметил, пока не столкнулся с этой проблемой.

3. Спасибо. Ошибка «Нет секретного ключа» возникла у меня случайным образом. Я пробовал то, что вы сказали, но мои ключи совпали. Чтобы устранить мою проблему, мне пришлось использовать git config --global gpg.program gpg , и все снова заработало.

4. Черт возьми, ни один из них не устраняет мою проблему. ДЛИННЫЙ вывод совпадает, но git постоянно сообщает, что не может найти ключ.