При подписывании коммитов с Git мой пароль не запрашивается
Я пытался подписать мои коммиты с командой git commit -S
но он не работает без запроса моей парольной фразы для моего ключа GPG.
Ошибка:
error: gpg failed to sign the data
fatal: failed to write commit object
Я заметил, что если я выполню следующую команду перед git commit -S
:
gpg -o /dev/null --local-user MY_KEY_ID -as <(echo 1234) && echo "The correct passphrase was entered for this key"
... все работает хорошо, и мои коммиты должным образом подписаны. Я думаю, что это потому, что моя фраза кэшируется, но это не то поведение, которое я ожидаю.
Я надеялся, что Git будет запрашивать мою фразу-пароль каждый раз, когда я хочу подписать коммиты или теги.
Была найдена команда "разблокировать мой ключ" по этому вопросу: как использовать командную строку gpg для проверки правильности ключевой фразы
2 ответа
Вы, вероятно, должны сказать pinentry
, программное обеспечение, используемое gpg, чтобы запросить ваш пароль, где вас попросить.
export GPG_TTY=$(tty)
git commit -S
Если это работает, я бы порекомендовал экспортировать GPG_TTY
в файле rc вашей оболочки.
Для меня сброс и повторная установка ключа подписи сработали как шарм.
Это работает, если вы меняете ключ подписи на другой или git внезапно перестал запрашивать парольную фразу.
// remove signing key
git config --unset user.signingkey
// add new signing key
git config user.signingkey SECRETKEYLONGID
// tell git to automatically sign every commit
git config commit.gpgsign true
// commit as usual
git commit -m "commit message"
Git объясняет , как получить длинный идентификатор ключа подписи.
Вот и все!. Я надеюсь, что это пригодится.