web-dev-qa-db-fra.com

transfert gpg-agent: ioctl inapproprié pour le périphérique

J'essaie de configurer le transfert d'agent gpg afin d'utiliser pass ( https://www.passwordstore.org ) via ssh.

gpg version 2.2.9 sur les hôtes locaux et distants, installé par des instructions: https://Gist.github.com/vt0r/a2f8c0bcb1400131ff51

Sur la machine locale

extra-socket /home/mickey/.gnupg/S.gpg-agent.remote

echo RELOADAGENT | gpg-connect-agent

gpg --export -a mickey > mickey.gpg

echo "test" | gpg2 --encrypt -r mickey > out.gpg

scp *.gpg REMOTE_Host:

ssh -R /run/user/1002/gnupg/S.gpg-agent:/home/mickey/.gnupg/S.gpg-agent.remote -o "StreamLocalBindUnlink=yes" REMOTE_Host

Sur machine distante

gpg --import mickey.gpg

gpg --edit-key mickey

trust 5 quit

gpg --decrypt -v out.gpg

gpg: public key is FED6243A3325C554
gpg: connection to agent is in restricted mode
gpg: using subkey FED6243A3325C554 instead of primary key 9E2ED69A02554504
gpg: using subkey FED6243A3325C554 instead of primary key 9E2ED69A02554504
gpg: encrypted with 2048-bit RSA key, ID FED6243A3325C554, created 2018-07-23
      "mickey"
gpg: public key decryption failed: Inappropriate ioctl for device
gpg: decryption failed: No secret key

Ainsi, le transfert de socket d'agent fonctionne, il semble qu'il y ait des problèmes avec le programme Pinentry. Impossible de trouver quoi que ce soit qui fonctionne pour moi dans google.

UPD

J'ai essayé d'ajouter pinentry-program /usr/bin/pinentry-tty à gpg-agent.conf, nouvelle erreur:

gpg: public key decryption failed: Invalid IPC response
gpg: decryption failed: No secret key
15
Michael Zaikin

Cela se produit lorsque GPG ne sait pas où lire l'entrée. Le configurer simplement pour rechercher l'entrée de tty (le terminal connecté à l'entrée standard) le corrige:

export GPG_TTY=$(tty)
19
user787267

Cette méthode ne fonctionne pas lorsque vous êtes à l'intérieur d'un conteneur LXC. Ajoutez plutôt ceci à ~/.gnupg/gpg.conf:

use-agent 
pinentry-mode loopback

Ajoutez ensuite ceci à ~/.gnupg/gpg-agent.conf

allow-loopback-pinentry

Redémarrez ensuite l'agent avec echo RELOADAGENT | gpg-connect-agent.

( source )

4
Gaia