web-dev-qa-db-ja.com

UNIX内のパスフレーズを使用してgpgファイルを復号化できない

UNIXシェルプロンプト内で次のコマンドを使用してファイルを復号化しようとしています。

gpg --passphrase-file /path/to/passphrase/file --output /path/to/output/dir/full_db_restore --decrypt full_db_backup_current.tar.gpg

上記のコマンドを実行すると、次のエラーが発生します。

gpg: 3DES encrypted data
gpg: problem with the agent: No pinentry
gpg: encrypted with 1 passphrase
gpg: decryption failed: No secret key

Pinentryがインストールされていることを確認しました。ピンエントリーが問題かどうかはわかりません。 「秘密鍵がありません」というエラーの可能性があると感じています。どんな助けでもいただければ幸いです。

1
James P.

次のコマンドを使用する必要があります。

    gpg --batch --passphrase-fd 1 --passphrase-file /path/to/passphrase/file  
    --output /path/to/output/dir/full_db_restore full_db_backup_current.tar.gpg

-batch:非対話型モード(質問なし)のスクリプトで使用されます。

-passphrase-fd 1と一緒に-passphrase-file:ファイルからパスフレーズを読み取ります。

* nixで--passphrase-fileのみを使用すると、機能しません。

幸運を。

2

私はこれに対する解決策を発見しました。

/usr/bin/gpg --no-tty --batch --passphrase-file /path/to/passphrase/file --output   \
/path/to/output/dir/full_db_restore --decrypt full_db_backup_current.tar.gpg

唯一の違いは、--no-ttyオプションと--batchオプションを追加したことです。 UNIXサーバーにログオンした後、ユーザーをuserAからuserBに切り替えます。ユーザーを切り替えたため、エラーが発生したと思います。シェルスクリプトからコマンドを呼び出すときに上記のオプションが使用されるため、これが書き込みソリューションであるかどうかはわかりません。追加情報があれば大歓迎です。前もって感謝します。

2
James