Git - gpg на mac osx: ошибка: gpg не удалось подписать данные
Я установил GPG из brew.
brew install gpg
Это gnupg2-2.0.30_2.
Когда я фиксирую, я получаю сообщение об ошибке:
You need a passphrase to unlock the secret key for
user: "Max Mustermann (mycomment) <[email protected]>"
2048-bit RSA key, ID 1111AAAA, created 2017-01-05
error: gpg failed to sign the data
fatal: failed to write commit object
Я использовал команду:
gpg --list-secret-keys | grep ^sec
и он возвращает меня:
sec 2048R/1111AAAA 2017-01-05
Затем я использовал эту команду:
git config --global user.signingkey 1111AAAA
commit возвращает мне то же сообщение об ошибке.
Как я могу решить эту проблему?
Ответы
Ответ 1
Если вам вообще не предлагается пароль (вы не упоминаете, действительно ли вы…), решение может быть просто установить программу, которая облегчит это. Наиболее распространенным является пентриум.
brew install pinentry-mac
Таким образом, установка и повторная попытка могут заставить работать вещи. Но если нет, то другое, что нужно сделать, это убедиться git
его с помощью/найти нужную программу GPG. В эти дни вы действительно должны использовать gpg2
, поэтому, если у вас его еще нет, выполните:
brew install gnupg2
И затем, чтобы сказать git
что программа GPG хочет для вас, это:
git config --global gpg.program gpg2
В этот момент попробуйте выполнить коммит еще раз, и все может сработать.
Но если нет, то попробуйте это:
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
... а затем попробуйте еще раз.
Примечание. Согласно некоторым комментариям ниже, чтобы изменения вступили в силу, вам, вероятно, потребуется перезагрузиться после внесения изменений.
Ответ 2
Всем, кто сталкивается с этой проблемой на компьютерах MacOS, попробуйте следующее:
brew uninstall gpg
brew install gpg2
brew install pinentry-mac
(при необходимости)
gpg --full-generate-key
Создать ключ с помощью алгоритма.
- Получите сгенерированный ключ, выполнив:
gpg --list-keys
- Установите ключ здесь
git config --global user.signingkey <Key from your list>
git config --global gpg.program /usr/local/bin/gpg
git config --global commit.gpgsign true
- Если вы хотите экспортировать свой ключ в GitHub, то:
gpg --armor --export <key>
и добавьте этот ключ в GitHub в ключах GPG: https://github.com/settings/keys (со строкой START и END)
Если проблема все еще существует:
test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile
echo 'export GPG_TTY=$(tty)' >> ~/.profile
Если проблема все еще существует:
Установите https://gpgtools.org и подпишите ключ, который вы использовали, нажав Sign в строке меню: Key -> Sign
Если проблема все еще существует:
Перейдите: ваш глобальный файл .gitconfig
, который в моем случае находится по адресу: /Users/gent/.gitconfig
И измените файл .gitconfig (убедитесь, что адрес электронной почты и имя совпадают с тем, который вы создали при создании ключа):
[user]
email = [email protected]
name = Gent
signingkey = <YOURKEY>
[gpg]
program = /usr/local/bin/gpg
[commit]
gpsign = true
gpgsign = true
[filter "lfs"]
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
[credential]
helper = osxkeychain
Ответ 3
Ваш вопрос предполагает, что вы действительно хотите подписать свои коммиты. Если вы этого не сделаете, исправление очень простое - отключите подпись коммитов:
git config --global commit.gpgsign false
В моем случае я унаследовал некоторые настройки git config по умолчанию, которые включали подписание коммита.
Ответ 4
У меня было то же сообщение об ошибке и я обнаружил, что срок действия моего ключа истек.
Поэтому было бы неплохо проверить срок действия ключа с помощью:
gpg --list-keys
Если срок действия вашего ключа также истек, вы можете отрегулировать срок его действия с помощью:
gpg --edit-key <YOUR_KEY>
а затем:
gpg> expire
...enter the new expiration date...
gpg> save