Саша Черных
Саша Черных

Reputation: 2813

Disable enter passphrase for each commit

1. Summary

I can't disable enter passphrase each time, how I make commit.


2. Environment


3. Steps to reproduce

I install and set Gpg4win → I move to folder with .git subfolder →


4. Expected behavior

Succsessful signed commit without entering passphrase.


5. Actual behavior

I get window, where I need enter my passphrase:

Enter password

pinentry-qt

Please enter the passphrase to unlock the OpenPGP secret key:

I need enter my passphrase each time, as I make commit;

    exclude: small-time between commits.


6. Not helped

I find in my USERPROFILE folder — C:\Users\SashaChernykh.gnupg\gpg-agent.conf file. I try add to this file no-tty, batch or no-use-agent lines:

no-tty
batch
no-use-agent

I still get actual behavior, not expected.


7. Do not offer

  1. please, do not offer, that I must enter passphrase every time;
  2. or that I can make unsigned commits;
  3. I can set big values for default-cache-ttl and max-cache-ttl parameters in C:\Users\SashaChernykh\.gnupg\gpg-agent.conf file, but it not disables passphrase entering.

Upvotes: 38

Views: 14257

Answers (4)

Chukwuemeka Maduekwe
Chukwuemeka Maduekwe

Reputation: 8586

On windows:

  1. Go to your root file for that particular user: C:\Users\<profile.name>

    Where profile.name stands for the current user

  2. Open the .gitconfig file else create one
  3. Add this line to the file and save [commit] gpgsign = false.

Upvotes: 0

phd
phd

Reputation: 94943

I think you need to remove batch option and no-use-agent from .gnupg\gpg-agent.conf. Add use-agent to .gnupg\gpg.conf.

Upvotes: 0

Andre Heinecke
Andre Heinecke

Reputation: 616

default-cache-ttl max-cache-ttl

This is the correct way to do this. The default timeout there is 10 minutes so if there are more then 10 minutes between your commits you would have to extend the time.

C:\Users\SashaChernykh.gnupg\gpg-agent.conf

This is not the correct path. This would be the path on a GNU/Linux system.

The Home directory for GnuPG on Windows is %APPDATA%\gnupg

e.g.

c:\Users\SashaChernykh\Appdata\Roaming\gnupg\gpg-agent.conf

After changing it you also have to restart the gpg-agent process.

You can do this by using gpgconf on the command line.

gpgconf --reload gpg-agent

The simplest way to change the value with Gpg4win and check that it was really set is by using Kleopatra:

Settings -> Configure Kleopatra -> GnuPG System -> Private Keys

There you can view the settings of and change:

expire cached PINs after N seconds
set maximum PIN cache lifetime to N seconds 

To some high value.


If you don't want to have ever enter a passphrase you can simply remove it from your key.

On the command line:

gpg --passwd <yourkeyid or email>

You can leave it empty and will be asked two times to confirm that you want to leave it empty. Afterwards the passphrase of you key is removed and you do not have to enter the passphrase ever again.

You can also select change passphrase from Kleopatra's Details Window (double click on the key).

Upvotes: 50

kan
kan

Reputation: 28981

Nothing to do with Git in particular, you need a gpg-agent running. Git for Windows shell has it packaged. There are some instructions here how to run the agent automatically: https://medium.com/@timmywil/sign-your-commits-on-github-with-gpg-566f07762a43

The tricky bit of running the gpg-agent - after it starts, it needs to set environment variables so that gpg could find its PID and socket.

Upvotes: 1

Related Questions