Tôi đã tìm thấy trong https://www.gnupg.org/documentation/manuals/gnupg/Unattends-GPG-key-generation.html#Unattends-GPG-key-generation để tạo khóa gpg mà không cần tương tác của người dùng, nhưng nó không dường như làm việc
Kịch bản của tôi là:
#!/usr/bin/env bash
rm -rf .gnupg
mkdir -m 0700 .gnupg
touch .gnupg/gpg.conf
chmod 600 .gnupg/gpg.conf
tail -n +4 /usr/share/gnupg2/gpg-conf.skel > .gnupg/gpg.conf
touch .gnupg/{pub,sec}ring.gpg
cat >.gnupg/foo <<EOF
%echo Generating a basic OpenPGP key
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: User 1
Name-Comment: User 1
Name-Email: user@1.com
Expire-Date: 0
Passphrase: kljfhslfjkhsaljkhsdflgjkhsd
%pubring foo.pub
%secring foo.sec
# Do a commit here, so that we can later print "done" :-)
%commit
%echo done
EOF
gpg2 --verbose --batch --gen-key .gnupg/foo
Khi tôi chạy nó, nó hiển thị:
=$ ./gen.keys.sh
gpg: Generating a basic OpenPGP key
gpg: no running gpg-agent - starting one
gpg: writing public key to `foo.pub'
gpg: writing secret key to `foo.sec'
Nhưng sau đó nó chỉ bị treo.
Khi tôi kiểm tra, trong lúc này, cây ps cho người dùng này, tôi thấy:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tstpg 22603 0.0 0.0 24108 5688 pts/9 Ss 14:59 0:00 -bash
tstpg 22624 0.0 0.0 13688 3168 pts/9 S+ 14:59 0:00 \_ bash ./gen.keys.sh
tstpg 22632 0.2 0.0 27428 3676 pts/9 SL+ 14:59 0:00 \_ gpg2 --verbose --batch --gen-key .gnupg/foo
tstpg 22634 0.3 0.0 18072 2884 pts/9 SL+ 14:59 0:00 \_ gpg-agent --server
Trong ~ / .gnupg / gpg.conf không có đề cập nào về đại lý và tôi không biết nó đang cố gắng làm gì.
Các tệp foo.pub/foo.sec được tạo trong thư mục nhà, nhưng trống.
Tôi đang thiếu gì? Làm thế nào để tạo khóa mà không có bất kỳ loại tương tác người dùng?
Phiên bản:
- gpg (GnuPG) 2.0.26
- libgcrypt 1.6.2