SolarisサーバからLinuxサーバへのマイグレーションを行っており、現行サーバ化で運用しているGnuPGデータ復号化シェルの稼働検証を行っているのですが、うまくいかず困っています。
どなたかお知恵を拝借できないでしょうか。よろしくお願いいたします。
経緯
- 現行サーバのデータを新サーバに移管。
(エクスポートコマンドなどは用いず、~/.gnupg/下のデータをすべてファイルとしてコピー)
0. 新サーバで基幹システムからシェルを実行したところ異常終了。
0. コマンドラインから上記コマンドを手で実行したところ、"OpenPGPの秘密鍵のロックを解除するためにパスフレーズを入力してください:"とパスフレーズの入力を求める画面が表示されたため、それが原因でシェルが異常終了していると推測。
(なおこの画面で"passphrase.txt"のパスフレーズを手入力すると復号化に成功する)
0. 上記3.でパスフレーズを手入力して復号化に成功したのち、基幹システムから2.を再度実行すると今度は正常終了する。だが、しばらく時間をあけて再度2.を実行すると再び異常終了する。以降何度実行しても同様。
前提・実現したいこと
基幹システムからシェルを実行してGnuPGでパスフレーズを手入力せずにデータの復号化を行いたい。
gnuPGの設定の問題(秘密鍵の認証など?)なのか、Linux側の設定の問題(環境変数あたり?)なのか分からないが、まずは動くようにしたい。
発生している問題・エラーメッセージ
そもそも当初現行のシェルをそのまま実行した際には以下のようなエラーが表示された。
gpg: 2048-ビットRSA鍵, ID XXXXXXXXXXXXXXXX, 日付2009-11-25に暗号化されました "hoge <hoge@fuga.co.jp>" gpg: 公開鍵の復号に失敗しました: デバイスに対する不適切なioctlです gpg: 復号に失敗しました: 秘密鍵がありません
シェルに以下の2点を追記したところパスフレーズを手入力すれば復元には成功するようになった
(これも手探りなので、対応として正解なのか分かりませんが・・・)
- export GPG_TTY=$(tty) を追加
- 復元化コマンドに"--batch "オプションを追加
※現行環境でシェル内で上記二点を宣言していないにも関わらず正常に稼働しているということも関係している?
該当のソースコード
■hoge.sh
(略)
export GPG_TTY=$(tty)
/usr/bin/gpg --passphrase-fd 0 --batch --no-tty --yes -o "out.dat" -d "in.dat" < "passphrase.txt"
(略)
試したこと
gpg-agentを再起動したが変わらず。そもそも現行Solaris環境ではgpg-agentは起動していない?ように見える
envコマンドで環境変数を表示したところ、現行環境では"GPG_TTY"は見当たらず。
補足情報(FW/ツールのバージョンなど)
■現行 OS:Solaris
Oracle Corporation SunOS 5.11 11.2
gpg (GnuPG) 1.4.10
■移行先 OS:Linux
gpg (GnuPG) 2.2.9
libgcrypt 1.8.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/11 02:47