web-dev-qa-db-fra.com

git - gpg sur mac os x: erreur: gpg n'a pas réussi à signer les données

J'ai installé GPG à partir de brew.

brew install gpg

C'est gnupg2-2.0.30_2.

Lorsque je m'engage, j'obtiens un message d'erreur:

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

J'ai utilisé la commande:

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

et ça me rend:

sec   2048R/1111AAAA 2017-01-05

Ensuite, j'ai utilisé cette commande:

git config --global user.signingkey 1111AAAA

commit me renvoie le même message d'erreur.

Comment puis-je résoudre ce problème?

18
Mondy

Si vous n’êtes pas du tout invité à saisir une phrase secrète (vous ne mentionnez pas si vous l’êtes ou non…), la solution peut être d’installer également un programme pour faciliter cela. Le plus courant est pinentry .

brew install pinentry-mac

Donc, installez cela et essayez à nouveau mai pour que les choses fonctionnent. Sinon, une autre chose à faire est de vous assurer que git l'utilise/trouve le bon programme GPG. De nos jours, vous devriez vraiment utiliser gpg2, donc si vous ne l'avez pas déjà installé, faites:

brew install gnupg2

Et puis, pour dire à git que le programme GPG vous tient à cœur, ceci:

git config --global gpg.program gpg2

À ce stade, essayez à nouveau votre commit et les choses pourraient bien fonctionner.

Sinon, essayez ceci:

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

… Puis réessayez.

Remarque: Selon certains commentaires ci-dessous, pour que cette modification prenne effet, vous devrez peut-être redémarrer après avoir effectué la modification.

26
sideshowbarker

Pour toute personne confrontée à ce problème sur les machines MacOS , essayez ceci:

  1. brew uninstall gpg
  2. brew install gpg2
  3. brew install pinentry-mac (Si nécessaire)
  4. gpg --full-generate-key Créez une clé en utilisant un algorithme.
  5. Obtenez la clé générée en exécutant: gpg --list-keys
  6. Définissez la clé ici 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. Si vous souhaitez exporter votre clé vers GitHub alors: gpg --armor --export <key> Et ajoutez cette clé à GitHub sur les clés GPG: https://github.com/settings/keys (avec START et END ligne incluse)

Si le problème persiste:

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

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

Si le problème persiste:

Installez https://gpgtools.org et signez la clé que vous avez utilisée en appuyant sur Signer dans la barre de menus: Clé -> Signe

Si le problème persiste:

Allez dans: votre fichier global .gitconfig Qui dans mon cas est à: /Users/gent/.gitconfig Et modifiez le . Gitconfig fichier (veuillez vous assurer que l'e-mail et le nom sont identiques à ceux que vous avez créés lors de la génération de la clé):

[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 J'ai pris cette réponse de ma réponse précédente ici: gpg n'a pas réussi à signer les données fatales: n'a pas pu écrire l'objet de validation [Git 2.10.0]

6
Gent Berani

Votre question suppose que vous voulez réellement signer vos commits. Si vous ne le faites pas, le correctif est très simple - désactivez la signature de validation:

git config --global commit.gpgsign false

Dans mon cas, j'avais hérité de certains paramètres de configuration git par défaut, dont la signature de validation.

3
donturner