In my post about SSH keys with GPG I mentioned that I had put the following in my zsh
config
gpg-connect-agent updatestartuptty /bye >/dev/null
This was because GPG has no way of knowing which TTY you are using for displaying pinentry
.
I have updated my configuration now as that setup was causing some issues.
As my zsh
config would run on every new terminal I started, GPG would always display pinentry
on the most recent terminal, not necessarily on the terminal I was using.
To fix this I removed that command from my config and instead included the following in ~/.ssh/config
Host localhost
ForwardAgent yes
AddKeysToAgent ask
Match host * exec "gpg-connect-agent updatestartuptty /bye"
Now gpg-connect-agent
will run when I initiate ssh
and update the TTY to whichever one I am using. Thanks to this answer on Stack Exchange for the fix.
The reason I needed this fix was because pinentry
would pop up quite regularly when running ssh
. I had the default-cache-ttl
and max-cache-ttl
values in ~/.gnupg/gpg-agent.conf so that GPG would cache my passphrase for an entire day but that didn’t appear to be applied to SSH. I read through the man pages didn’t find anything to help. I am sure I am missing something, hopefully in the next week or two I can figure it out.
In the meantime, my updated setup is much smoother now that I don’t have to go hunting for pinentry
.