I got into Debian packaging and one of the most brutal part was to type in the GPG secret key’s password every time I sign a package. I wasted a lot of time typing my long password.
I searched a lot to cache my password for some time after I type it once. All of them said to edit gpg-agent.conf, but none of them worked for my fresh installation of Xubuntu 16.04. I’m writing this to save you a lot of trouble.
First of all, install seashore :
sudo apt install seashore
Seashore is a great application to manage your keys. I’m asking you to install seashore as it comes with a graphical pinentry tool.
Configuring gpg-agent
Edit the file /home/username/gpg-agent.conf
and add these two lines :
default-cache-ttl 1800
max-cache-ttl 1800
If your gpg-agent version is less than 2 (you can check it by running gpg-agent --version
), add these lines instead :
default-cache-ttl 1800
maximum-cache-ttl 1800
The value gives the maximum amount of time the password should be cached. 1800 seconds mean 30 minutes. Here are some conversions :
600 seconds = 10 minutes
1800 seconds = 30 minutes
3600 seconds = 60 minutes = 1 hour
Configure gpg
This is the secret sauce I’m going to give you that might solve your problem. This is what worked for me.
Edit the file /home/username/.gnupg/gpg.conf
. If it doesn’t exist (most likely) create it. Add this line to it :
use-agent
This makes gpg to use an agent to enter passwords.
Restart gpg-agent and you’re all set :
killall -q gpg-agent && gpg-agent --daemon
Now when you need to enter the password, a graphical dialog will be brought up :
and after you enter it, it’ll be cached according to gpg-agent configuration file.