web-dev-qa-db-ja.com

gpgを使用して、対称暗号を使用してSTDINから暗号化する方法は?

STDINを使用してgpgからデータを暗号化しようとしています。私は以下を使用しています:

echo 'plaintext' | gpg -c -o output.gpg

ただし、次の結果が表示されます。

gpg: problem with the agent: Inappropriate ioctl for device
gpg: error creating passphrase: Operation cancelled
gpg: symmetric encryption of '[stdin]' failed: Operation cancelled

STDINと対称暗号のみを使用してgpgから暗号化するにはどうすればよいですか?私はMacOSを使用しており、GPG v2.2.13

1
wcarhart

これは、ピンエントリ(パスフレーズの登録に使用されるユーティリティ)の問題です。 Macにインストールされていますか?そうでない場合は、brew install pinentry-macを実行して再試行してください。そうでない場合は、構成を変更する必要があります。詳細については、これに関するコメントを確認してください issue ですが、これで問題ありません。

brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent
1
Dorsug

多くの人が、公式のGnuPGチームによって保守されていないパッケージであるpinentry-macをインストールすることを推奨しています。 私はそれに対してお勧めします。

より安全な代替手段は、 公式ドキュメント で提案されているように~/.profileに次の行を追加することです(~/.bashrcに追加しても機能しませんでした)。

GPG_TTY=$(tty)
export GPG_TTY

これらの行が追加されたら、端末を閉じると問題が解決するはずです。

また、brew upgrade gnupgを使用してgnupgを最新バージョンにアップグレードしてください。

2
sunknudsen