Why doesn't gpg-agent forwarding work?
Kevin Gallagher
kevin at z.cash
Sun Oct 23 09:34:14 CEST 2016
Ok, I figured out the cause of the problem I was having. As is indicated
in your message, one must have the corresponding public keys in the
remote keyring before the secret keys from the forwarded gpg-agent are
listed as available.
Thank you Thomas. I hope others will find this useful.
On 10/18/2016 12:58 PM, Thomas Glanzmann wrote:
> Hello Kevin,
>
>> Thanks for the advice. But as I mentioned, I tried using GnuPG 2.1.15
>> on the target machine as well (via the packages in Debian sid), and
>> this did not work. gpg2 is simply not speaking to the forwarded
>> gpg-agent socket, however gpg-connect-agent can. Any other ideas?
> Check your configuration (gpg-agent.conf and gpg.conf). You have to put
> this two files on the remote and local machine. Also Understand how gpg
> 2.1.x interacts with gnupg from the diagram below. Enable debugging in
> the gpg agent.
>
> Forward GPG socket
> ------------------
> # On the server
> echo 'StreamLocalBindUnlink yes' >> /etc/ssh/sshd_config
> sudo /etc/init.d/ssh restart
>
> # On the client
> ssh -R /home/sithglan/.gnupg/S.gpg-agent:/home/sithglan/.gnupg/S.gpg-agent-extra gmvl.de
>
> List secret keys
> ----------------
> gpg-connect-agent "keyinfo --list" /bye
>
> GPG Agent Configuration
> -----------------------
> .gnupg/gpg-agent.conf
> pinentry-program /usr/bin/pinentry
> extra-socket /home/sithglan/.gnupg/S.gpg-agent-extra
> enable-ssh-support
> default-cache-ttl 600
> max-cache-ttl 7200
> keep-tty
> keep-display
> # debug-level guru
> # debug-all
> # log-file /tmp/gpg-agent.log
>
> Remote GPG Setup
> ----------------
> # Achtung vorher Backup machen
> rm .gnupg/secring* .gnupg/pubring* .gnupg/private-keys-v1.d/*
> # For every public key
> gpg2 --recv-key 0x9D106472D6D50DBA
> gpg2 --recv-key 0x03BF970657E19B02
>
> # After that private keys should be listed
> gpg2 -K
>
> cat <<EOF > .gnupg/gpg.conf
> keyserver hkps://hkps.pool.sks-keyservers.net
> keyserver-options no-honor-keyserver-url
> cert-digest-algo SHA512
> no-greeting
> lock-once
> default-key 1DD3BBDC897A94CD03F451B09D106472D6D50DBA
> encrypt-to 1DD3BBDC897A94CD03F451B09D106472D6D50DBA
> keyid-format 0xlong
> use-agent
> with-fingerprint
> quiet
> default-recipient-self
> no-secmem-warning
> keyserver-options auto-key-retrieve
> no-auto-check-trustdb
> default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
> EOF
>
> GNUPG Interaction
> -----------------
>
> Here are steps and the interaction.
>
> (1) here are the processes
> [gpgme]----[gpg]====[gpg-agent]----[scdaemon]
> ^--- possibly by forwarded socket
>
> (2) A client program (Mutt, in your case) asks decryption through gpgme
> decrypt
> [gpgme]--->[gpg]----[gpg-agent]----[scdaemon]
>
> (3) it goes to scdaemon
> decrypt
> [gpgme]----[gpg]--->[gpg-agent]----[scdaemon]
>
> decrypt
> [gpgme]----[gpg]----[gpg-agent]--->[scdaemon]
>
> (4) if the token is not authenticated yet,
> scdaemon asks a user PIN back through gpg-agent
> "PIN please"
> [gpgme]----[gpg]----[gpg-agent]<---[scdaemon]
>
>
> (5) Then, gpg-agent invokes pinentry.
> [gpgme]----[gpg]----[gpg-agent]----[scdaemon]
> |
> [pinentry]<---/
>
> (6) pinentry pops up GUI dialog window to user.
> [gpgme]----[gpg]----[gpg-agent]----[scdaemon]
> |
> User <----[pinentry]----/
>
> (7) User inputs PIN by the dialog.
> [gpgme]----[gpg]----[gpg-agent]----[scdaemon]
> |
> User ---->[pinentry]----/
> PIN
>
> [gpgme]----[gpg]----[gpg-agent]----[scdaemon]
> ^
> [pinentry]----/
> PIN
>
> PIN
> [gpgme]----[gpg]----[gpg-agent]--->[scdaemon]
>
> (8) scdaemon sends the pin to the token to authenticate.
> PIN
> [gpgme]----[gpg]----[gpg-agent]----[scdaemon]-->[token]
>
> (9) Token is ready to decrypt, now.
> scdaemon sends encrypted message to the token.
> decrypt
> [gpgme]----[gpg]----[gpg-agent]----[scdaemon]-->[token]
>
> (10) token replies back by decrypted message.... to gpgme.
> decrypted
> [gpgme]----[gpg]----[gpg-agent]----[scdaemon]<--[token]
>
> decrypted
> [gpgme]----[gpg]----[gpg-agent]<---[scdaemon]
>
> decrypted
> [gpgme]----[gpg]<---[gpg-agent]----[scdaemon]
>
> decrypted
> [gpgme]<---[gpg]----[gpg-agent]----[scdaemon]
>
> Cheers,
> Thomas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/attachments/20161023/26217d90/attachment-0001.html>
More information about the Gnupg-users
mailing list