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, попробуйте следующее:

  1. brew uninstall gpg
  2. brew install gpg2
  3. brew install pinentry-mac (при необходимости)
  4. gpg --full-generate-key Создать ключ с помощью алгоритма.
  5. Получите сгенерированный ключ, выполнив: gpg --list-keys
  6. Установите ключ здесь git config --global user.signingkey <Key from your list>
  7. git config --global gpg.program /usr/local/bin/gpg
  8. git config --global commit.gpgsign true
  9. Если вы хотите экспортировать свой ключ в 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