Sometimes after a reboot, my YubiKey card is not being detected when trying to use it to authenticate an SSH session, making the SSH connection fail with a Permission denied (publickey).
error.
To check my card status, I run the ssh-add -L
which should print my card's public key, but instead it shows this error:
$> ssh-add -L
Error connecting to agent: No such file or directory
After a lot of reading and tinkering, I'm still not sure what the underlying issue is, but I've found that forcefully restarting the gpg-agent
always fixes the issue after a system restart:
gpg-connect-agent killagent /bye
gpg-connect-agent updatestartuptty /bye
gpg-connect-agent /bye
Knowing this, the quick-n-dirty solution is to add that command as a bash alias by appending this line to the end of the ~/.bash_profile
file:
alias gpgreset='gpg-connect-agent killagent /bye; gpg-connect-agent updatestartuptty /bye; gpg-connect-agent /bye'
If you prefer one-liners, you can paste this command in your terminal window and it'll append the line to the end of your bash profile file:
echo "alias gpgreset='gpg-connect-agent killagent /bye; gpg-connect-agent updatestartuptty /bye; gpg-connect-agent /bye'" >> ~/.bash_profile
Now quit Terminal (⌘+Q
) and re-open it.
You should now be able to type gpgreset
in your terminal to trigger a quick restart of the gpg-agent
, which should fix any issue you are having with your YubiKey card.