web-dev-qa-db-ja.com

gpg-agent forwarding:デバイスに不適切なioctl

SSH経由でパス( https://www.passwordstore.org )を使用するために、gpg-agent転送をセットアップしようとしています。

ローカルホストとリモートホストの両方のgpgバージョン2.2.9、手順に従ってインストール: https://Gist.github.com/vt0r/a2f8c0bcb1400131ff51

ローカルマシン上

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

リモートマシン上

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

したがって、エージェントソケット転送は機能しています。Pinentryプログラムに問題があるようです。グーグルで私のために働いたものを見つけることができませんでした。

UPD

pinentry-program /usr/bin/pinentry-ttyをgpg-agent.confに追加しようとしました、新しいエラー:

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

これは、GPGがどこから入力を読み取るか混乱しているときに発生します。 tty(標準入力に接続されている端末)からの入力を探すように構成するだけで、問題が修正されます。

export GPG_TTY=$(tty)
19
user787267

このメソッド は、LXCコンテナ内では機能しません。代わりに、これを~/.gnupg/gpg.confに追加します。

use-agent 
pinentry-mode loopback

次に、これを~/.gnupg/gpg-agent.confに追加します

allow-loopback-pinentry

次に、echo RELOADAGENT | gpg-connect-agentを使用してエージェントを再起動します。

ソース

4
Gaia