119 votes

La signature de git commit a échoué: clé secrète non disponible

Je reçois cette erreur lorsque j'essaie de commettre avec Git.

 gpg: skipped "name <name@mail.com>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object
 

J'ai généré une nouvelle clé comme ci-dessous mais cela donne toujours la même erreur

 gpg --list-keys
~/.gnupg/pubring.gpg
--------------------------------
pub   2048R/35F5FFB2 2016-04-23
uid                  name (New key) <name@mail.com>
sub   2048R/112A8C2D 2016-04-23
 

La clé secrète est la même que ci-dessus

J'ai trouvé ceci Générer une clé GPG pour le marquage git et suivre les étapes mais cela ne fonctionne toujours pas, une idée?

187voto

Wakeel Points 128

Cela a fonctionné pour moi sur Windows 10

git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

Ce fut l'erreur que j'ai eu avant le correctif

gpg: skipped "3E81C*******": secret key not available gpg: signing failed: secret key not available error: gpg failed to sign the data fatal: failed to write commit object

97voto

Vous devez configurer la clé secrète avant de l'utiliser.

 git config user.signingkey 35F5FFB2
 

Ou global si vous allez utiliser la même clé pour chaque référentiel.

 git config --global user.signingkey 35F5FFB2
 

Source: https://git-scm.com/book/es/v2/Git-Tools-Signing-Your-Work

69voto

paul van bladel Points 673

Ce qui a fonctionné pour moi a été d'ajouter

 git config --global gpg.program "C:/Program Files (x86)/GNU/GnuPG/gpg2.exe"
 

Si vous voulez trouver le chemin complet de gpg2.exe:

 where gpg2.exe
 

17voto

alphayax Points 101

Je'like afin de compléter toutes ces réponses, car j'ai beaucoup de problèmes avec cela.

Ces deux exemples d'utilisation de l' --global drapeau, mais vous pouvez le supprimer si vous voulez ces choses localement.

Configurer la clé secrète dans git

git config --global user.signingkey 35F5FFB2

Configurer sorcière gpg programme tu de l'utilisation de git (facultatif)

Certains systèmes (Ubuntu par exemple) peut avoir gpg et gpg2 dans le même temps. Vous devez spécifier que vous utiliserez gpg2

git config --global gpg.program gpg2

L'exportation GPG_TTY (facultatif)

Il est possible si vous utilisez ces commandes en ssh environnement que vous avez l'erreur suivante : Inappropriate ioctl for device ou gpg: échec de la signature : Ioctl() inapproprié pour un périphérique. Ceci peut être résolu par le biais de :

export GPG_TTY=$(tty)

Auto activer GPG chant (facultatif)

git config --global commit.gpgsign true

6voto

jsexpert Points 704

Vous devez définir la variable GNUPGHOME . Sans cela, GnuPG ne peut pas trouver vos clés.

 # On unix add it to your path

# On windows it will usually be under: 
<drive>:\Users\<username>\AppData\Roaming\gnupg
 

Sous Unix, il suffit de l'ajouter au chemin.
Sous Windows, vous devez ouvrir le panneau de configuration et le définir comme suit:

 System Variable
  Name: GNUPGHOME
  Path: <drive>:\Users\<username>\AppData\Roaming\gnupg
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X