pmcg521
pmcg521

Reputation: 349

Git error: gpg failed to sign the data on Linux

I am having trouble signing commits. With the following git config:

user.name=Bob
user.email=[bob's email]
user.signingkey=ABCDEFGH
user.user=bob1
gpg.program=gpg2

I was told to include only the first eight characters of the secret key.

After staging, upon git commit -S -m "commit message", I receive the following errors:

error: gpg failed to sign the data
fatal: failed to write commit object

It seems that most users who encounter this error are on Macs and have some extra setup to do. But I'm on Kali Linux.

Any advice?

Upvotes: 11

Views: 21623

Answers (3)

amordo
amordo

Reputation: 669

Had the same problem using WSL (Ubuntu). Working solution for me was adding export GPG_TTY=$(tty) into ~/.bashrc, thanks to this answer.

Upvotes: 13

Long
Long

Reputation: 1793

For those who followed the answer but could not make it work. There is a chance that you had tried other solutions and accidentally did this (which is for MacOSX, not Linux)

git config --global gpg.program=gpg2

You should only do that if you are using MacOSX. For Linux, you can fix it by unset-ing that entry first by running this command (because your system uses gpg NOT gpg2).

git config --global --unset gpg.program

Now you can follow the accepted answer in this page to tell Git to use your key.

Upvotes: 4

larsks
larsks

Reputation: 311711

I was told to include only the first eight characters of the secret key.

The value of user.signingkey is a key id identifying which key git should use when generating the signature.

There's a complete example in the official documentation that shows how this should work. If gpg --list-keys shows something like:

/Users/schacon/.gnupg/pubring.gpg
---------------------------------
pub   2048R/0A46826A 2014-06-04
uid                  Scott Chacon (Git signing key) <[email protected]>
sub   2048R/874529A9 2014-06-04

Then the key id is 0A46826A:

git config --global user.signingkey 0A46826A

Upvotes: 25

Related Questions