web-dev-qa-db-ja.com

GNUPG2が突然「skey配列の構築エラー:そのようなファイルまたはディレクトリはありません」をスローします

いくつかのコンテキスト:私は、フレームワークの一部としてgnupg2を使用してPGP公開鍵でデータを暗号化するプロジェクトのメンテナーです。これにより、サーバーが侵害された場合にデータを読み取ることができなくなり、CIスクリプトが機能しました。今日まで私は奇妙なエラーメッセージを受け取りました:

デバイスに不適切なioctl

これを修正するには、次の行をCIスクリプトに追加しました(機能しました)。

export GPG_TTY=$(tty)

ただし、現在、ランダムにエラーがスローされるという問題が発生しています。

Skey配列の構築中にエラーが発生しました:そのようなファイルまたはディレクトリはありません

このエラーが発生している理由や、見つからないファイルまたはディレクトリを誰かが知っていますか?オンラインで、次のディレクトリが見つからないか、無効な権限を持っている可能性があることがわかりましたが、何も実行されていないようです。

$ mkdir -p ~/.gnupg/private-keys-v1.d
$ chmod 700 ~/.gnupg/private-keys-v1.d

以下は、私のCIランナーの出力です。

$ export GPG_TTY=$(tty)
$ apt-get update
Get:1 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Get:3 http://security.debian.org/debian-security stretch/updates/main AMD64 Packages [440 kB]
Ign:2 http://cdn-fastly.deb.debian.org/debian stretch InRelease
Get:4 http://cdn-fastly.deb.debian.org/debian stretch-updates InRelease [91.0 kB]
Get:5 http://cdn-fastly.deb.debian.org/debian stretch Release [118 kB]
Get:6 http://cdn-fastly.deb.debian.org/debian stretch Release.gpg [2434 B]
Get:7 http://cdn-fastly.deb.debian.org/debian stretch-updates/main AMD64 Packages [12.1 kB]
Get:8 http://cdn-fastly.deb.debian.org/debian stretch/main AMD64 Packages [9530 kB]
Fetched 10.3 MB in 4s (2169 kB/s)
Reading package lists...
$ apt-get install -y Zip gnupg2
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  unzip
The following NEW packages will be installed:
  gnupg2 unzip Zip
0 upgraded, 3 newly installed, 0 to remove and 9 not upgraded.
Need to get 703 kB of archives.
After this operation, 1486 kB of additional disk space will be used.
Get:1 http://cdn-fastly.deb.debian.org/debian stretch/main AMD64 gnupg2 all 2.1.18-8~deb9u1 [299 kB]
Get:2 http://cdn-fastly.deb.debian.org/debian stretch/main AMD64 unzip AMD64 6.0-21 [170 kB]
Get:3 http://cdn-fastly.deb.debian.org/debian stretch/main AMD64 Zip AMD64 3.0-11+b1 [234 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 703 kB in 1s (528 kB/s)
Selecting previously unselected package gnupg2.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 29828 files and directories currently installed.)
Preparing to unpack .../gnupg2_2.1.18-8~deb9u1_all.deb ...
Unpacking gnupg2 (2.1.18-8~deb9u1) ...
Selecting previously unselected package unzip.
Preparing to unpack .../unzip_6.0-21_AMD64.deb ...
Unpacking unzip (6.0-21) ...
Selecting previously unselected package Zip.
Preparing to unpack .../Zip_3.0-11+b1_AMD64.deb ...
Unpacking Zip (3.0-11+b1) ...
Processing triggers for mime-support (3.60) ...
Setting up unzip (6.0-21) ...
Setting up Zip (3.0-11+b1) ...
Setting up gnupg2 (2.1.18-8~deb9u1) ...
$ echo "$GPG_PUBLIC_KEY" | gpg --import
gpg: WARNING: unsafe permissions on homedir '/root/.gnupg'
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key REDACTED: public key "REACTED <redacted@redacted >" imported
gpg: Total number processed: 1
gpg:               imported: 1
$ echo "$GPG_PRIVATE_KEY" | gpg --import
gpg: WARNING: unsafe permissions on homedir '/root/.gnupg'
gpg: key REDACTED: "REACTED <redacted@redacted>" not changed
gpg: key REDACTED/REDACTED: error sending to agent: No such file or directory
gpg: error building skey array: No such file or directory
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg:       secret keys read: 1
ERROR: Job failed: exit code 1

私は次のように私のドッカーを設定しました:

$ docker pull python:latest
$ docker create python:latest --name python
$ docker run -it python /bin/bash

以下は、昨年このエラーを見つけた最新の場所です。

6
Paradoxis

それは新しいバージョンのGNUPG2の問題であることが判明しました。--batchgpg --importフラグを追加することで問題を修正しました( この質問に基づいて

コードの固定行:

echo "$GPG_PRIVATE_KEY" | gpg --batch --import
8
Paradoxis