it-swarm.com.de

git - gpg unter Mac OS X: Fehler: GPG konnte die Daten nicht signieren

Ich habe GPG von Brew installiert.

brew install gpg

Es ist gnupg2-2.0.30_2.

Beim Festschreiben wird eine Fehlermeldung angezeigt:

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

Ich habe den Befehl verwendet:

gpg --list-secret-keys | grep ^sec

und es gibt mir zurück:

sec   2048R/1111AAAA 2017-01-05

Dann habe ich diesen Befehl verwendet:

git config --global user.signingkey 1111AAAA

commit gibt mir die gleiche Fehlermeldung zurück.

Wie kann ich dieses Problem lösen?

27
Mondy

Wenn Sie überhaupt nicht zur Eingabe einer Passphrase aufgefordert werden (Sie erwähnen nicht, ob Sie es sind oder nicht ...), besteht die Lösung möglicherweise darin, auch ein Programm zu installieren, um dies zu erleichtern. Am häufigsten ist Pinentry .

brew install pinentry-mac

Also installieren Sie das und versuchen Sie es erneut may bringen Sie die Dinge zum Laufen. Wenn nicht, müssen Sie auch sicherstellen, dass git das richtige GPG-Programm verwendet wird. Heutzutage sollten Sie wirklich gpg2 Verwenden. Wenn Sie das also noch nicht installiert haben, gehen Sie wie folgt vor:

brew install gnupg2

Und um git mitzuteilen, dass das GPG-Programm dies für Sie wünscht, gehen Sie wie folgt vor:

git config --global gpg.program gpg2

Versuchen Sie an diesem Punkt Ihr Commit erneut, und die Dinge funktionieren möglicherweise einfach.

Wenn nicht, versuchen Sie Folgendes:

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

… Und dann erneut versuchen.

Hinweis: Gemäß den folgenden Kommentaren müssen Sie möglicherweise nach der Änderung einen Neustart durchführen, damit diese Änderung wirksam wird.

42
sideshowbarker

Versuchen Sie Folgendes für alle, die dieses Problem auf MacOS Computern haben:

  1. brew uninstall gpg
  2. brew install gpg2
  3. brew install pinentry-mac (Falls erforderlich)
  4. gpg --full-generate-key Erstellen Sie einen Schlüssel mithilfe eines Algorithmus.
  5. Holen Sie sich den generierten Schlüssel, indem Sie Folgendes ausführen: gpg --list-keys
  6. Setzen Sie hier den Schlüssel 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. Wenn Sie Ihren Schlüssel nach GitHub exportieren möchten, gehen Sie wie folgt vor: gpg --armor --export <key> Und fügen Sie diesen Schlüssel unter GPG-Schlüsseln zu GitHub hinzu: https://github.com/settings/keys (mit START und END Zeile enthalten)

Wenn das Problem weiterhin besteht:

test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile

echo 'export GPG_TTY=$(tty)' >> ~/.profile

Wenn das Problem weiterhin besteht:

Installieren Sie https://gpgtools.org und signieren Sie die Taste, die Sie verwendet haben, indem Sie Signieren in der Menüleiste: Schlüssel -> Zeichen

Wenn das Problem weiterhin besteht:

Gehen Sie zu: Ihrer globalen .gitconfig - Datei, die sich in meinem Fall unter: /Users/gent/.gitconfig Befindet, und ändern Sie die Datei . Gitconfig file (Bitte stellen Sie sicher, dass E-Mail und Name mit denen übereinstimmen, die Sie beim Generieren des Schlüssels erstellt haben):

[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

ps Ich habe diese Antwort von meiner vorherigen Antwort hier übernommen: gpg konnte die Daten nicht fatal signieren: Commit-Objekt konnte nicht geschrieben werden [Git 2.10.0]

15
Gent Berani

Ihre Frage setzt voraus, dass Sie tatsächlich wollen Ihre Commits unterschreiben. Wenn Sie dies nicht tun, ist das Update sehr einfach - schalten Sie die Commit-Signatur aus:

git config --global commit.gpgsign false

In meinem Fall hatte ich einige Standard-Git-Konfigurationseinstellungen geerbt, die das Signieren von Commits beinhalteten.

1
donturner

Ich hatte die gleiche Fehlermeldung und stellte fest, dass mein Schlüssel abgelaufen war. Daher ist es möglicherweise eine gute Idee, den Ablauf Ihres Schlüssels zu überprüfen mit:

gpg --list-keys

Wenn Ihr Schlüssel ebenfalls abgelaufen ist, können Sie das Ablaufdatum anpassen mit:

gpg --edit-key <YOUR_KEY>

und dann:

gpg> expire
...enter the new expiration date...
gpg> save
1
A5308Y