web-dev-qa-db-ja.com

git-Mac OS X上のgpg:エラー:gpgがデータに署名できませんでした

BrewからGPGをインストールしました。

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

コミットすると、同じエラーメッセージが返されます。

この問題を解決するにはどうすればよいですか?

18
Mondy

パスフレーズのプロンプトがまったく表示されない場合(自分がパスフレーズであるかどうかは言及しません...)、解決策は、それを容易にするためのプログラムもインストールすることです。最も一般的なのは pinentry です。

brew install pinentry-mac

したがって、それをインストールして再試行しますmay動作させます。しかし、そうでない場合は、適切なGPGプログラムを使用/検索するgitを確認する必要があります。最近では、本当にgpg2ので、まだインストールしていない場合は、以下を実行します。

brew install gnupg2

そして、gitにGPGプログラムがあなたに望んでいることを伝えるには、次のようにします。

git config --global gpg.program gpg2

その時点で、もう一度コミットしてみてください。うまくいくかもしれません。

しかし、そうでない場合は、これを試してください:

echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf

…そしてもう一度やり直してください。

注:以下のコメントによると、この変更を有効にするには、変更後に再起動する必要があるようです。

26
sideshowbarker

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>_を使用し、このキーをGPGキーでGitHubに追加します。 https://github.com/settings/keys (with 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を変更しますファイル(Eメールと名前が、キーの生成中に作成したものと同じであることを確認してください)

_[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_

p.s以前の回答からこの回答を取りました: gpgはデータの致命的な署名に失敗しました:コミットオブジェクトの書き込みに失敗しました[Git 2.10.0]

6
Gent Berani

あなたの質問は、あなたが実際にコミットに署名することを前提としています。そうでない場合、修正は非常に簡単です-コミット署名をオフにします:

git config --global commit.gpgsign false

私の場合、コミット署名を含むいくつかのデフォルトのgit構成設定を継承していました。

3
donturner