SSH and gpg2: pinentry errors hidden from view, agent refused operation
Lars Noodén
lars.nooden at gmx.com
Thu Dec 30 15:38:47 CET 2021
Hello,
I have used GNUpg2 v 2.2.19 [1] to create an authentication RSA subkey
for use with SSH. At one point, I got past pinentry's blocking of the
use of the private key and successfully logged in via SSH to the server
from the one session. In order to test my notes (as I usually do) I
erased everything and started over with a newly created client-side
account and updated authorized_keys on the server. Some step is missing
and I cannot figure out how to get pinentry involved to make the key
available for the SSH client to use again.
What else is needed to get pinentry invoked so that the SSH client can
connect using the GnuPG RSA key?
At this point the public key is visible in the SSH agent:
$ ssh-add -l
3072 SHA256:j0V4cVzC...NKQPA (none) (RSA)
and the public key has been saved in the default file:
$ssh-add -L > ~/.ssh/id_rsa
and the SSH client seems to offer the public key to the server,
$ time ssh -v server.example.org
...
debug1: Next authentication method: publickey
debug1: Offering public key: (none) RSA SHA256:j0V4cVzC...NKQPA agent
debug1: Server accepts key: (none) RSA SHA256:j0V4cVzC...NKQPA agent
sign_and_send_pubkey: signing failed for RSA "/home/lars/.ssh/id_rsa"
from agent: agent refused operation
...
debug1: Trying private key: /home/lars/.ssh/id_xmss
debug1: No more authentication methods to try.
debug1: Next authentication method: keyboard-interactive
Connection closed by server.example.org port 22
ssh -v server.example.org 0.00s user 0.00s system 0% cpu 2:05.81 total
The contents of gpg-agent.conf and gpg.conf are as follows:
$ cat ~/.gnupg/gpg-agent.conf
pinentry-program /usr/bin/pinentry-curses
enable-ssh-support
allow-loopback-pinentry
$ cat ~/.gnupg/gpg.conf
use-agent
pinentry-mode loopback
I have set $GPG_TTY and $SSH_AUTH_SOCK
$ export GPG_TTY=$(tty)
$ gpg-connect-agent updatestartuptty /bye >/dev/null
$ export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
$ gpg-agent status /bye
gpg-agent[48580]: gpg-agent running and available
What else should I add, change, or read to get past the barrier of pinentry?
/Lars
[1] $ apt-cache policy gnupg2 | head -n 2
gnupg2:
Installed: 2.2.19-3ubuntu2.1
$ gpg2 --version | head -n 2
gpg (GnuPG) 2.2.19
libgcrypt 1.8.5
$ lsb_release -rd
Description: Linux Mint 20.2
Release: 20.2
$ uname -prs
Linux 5.4.0-91-generic x86_64
More information about the Gnupg-users
mailing list