Dagang Asked: 2019-09-04 17:25:25 +0800 CST2019-09-04 17:25:25 +0800 CST 2019-09-04 17:25:25 +0800 CST 以非交互方式延长 GPG 密钥的到期日期 772 我需要延长 GPG 密钥的到期日期,但我能找到的所有答案或文章都是交互式的,例如. 我需要将逻辑嵌入到 shell 脚本中,所以想知道如何以非交互方式进行操作? gnupg public-key-encryption 1 个回答 Voted Best Answer blami 2019-09-04T18:13:40+08:002019-09-04T18:13:40+08:00 假设您有您的密钥[email protected],并且该密钥的密码存储在 file 中passphrase.txt,以下命令将以非交互方式更改到期日期: printf "expire\n10w\nsave\n" | gpg --batch --pinentry-mode loopback --passphrase-fd 3 --command-fd 0 --status-fd=2 --edit-key [email protected] 3<passphrase.txt (如果由于 pinentry 调用而无法正常工作,请参阅下面的注释。) 命令简要说明: printf "expire\n10w\nsave\n"将这些命令发送到 gpg。expire修改key的有效期,10w是10周,save很明显。 --batch表示不会有用户输入 --pinentry-mode loopback允许将密码短语文件传输到 gpg(见下文) --passphrase-fd 3说文件描述符3是 gpg 应该寻找密码的地方(注意3<passphrase.txt在命令的末尾。 --command-fd 0说文件描述符0(或 STDIN)是 gpg 应该--batch从(命令printf开头的部分)获取命令的地方。 --status-fd 2表示状态进入2(或 STDOUT),您可能希望将其定向到日志。 --edit-key [email protected]是我们要编辑的关键 这个答案应该让您很好地了解如何使用 gpg “自动化”事情。要完成此操作,您可能需要更改加密子密钥的到期时间等。 注意:当前版本的 GnuPG 不允许轻松传递密码(它们默认为 gpg-agent 和名为 的程序pinentry)。为简单起见,我通过添加allow-loopback-pinentry到我的gpg-agent.conf. 请注意,这不安全,您可能希望实现自己的pinentry(或使用适合您的非交互式工作流程的现有),然后将其设置为gpg-agent.conf
假设您有您的密钥
[email protected]
,并且该密钥的密码存储在 file 中passphrase.txt
,以下命令将以非交互方式更改到期日期:(如果由于 pinentry 调用而无法正常工作,请参阅下面的注释。)
命令简要说明:
printf "expire\n10w\nsave\n"
将这些命令发送到 gpg。expire
修改key的有效期,10w
是10周,save
很明显。--batch
表示不会有用户输入--pinentry-mode loopback
允许将密码短语文件传输到 gpg(见下文)--passphrase-fd 3
说文件描述符3
是 gpg 应该寻找密码的地方(注意3<passphrase.txt
在命令的末尾。--command-fd 0
说文件描述符0
(或 STDIN)是 gpg 应该--batch
从(命令printf
开头的部分)获取命令的地方。--status-fd 2
表示状态进入2
(或 STDOUT),您可能希望将其定向到日志。--edit-key [email protected]
是我们要编辑的关键这个答案应该让您很好地了解如何使用 gpg “自动化”事情。要完成此操作,您可能需要更改加密子密钥的到期时间等。
注意:当前版本的 GnuPG 不允许轻松传递密码(它们默认为 gpg-agent 和名为 的程序
pinentry
)。为简单起见,我通过添加allow-loopback-pinentry
到我的gpg-agent.conf
. 请注意,这不安全,您可能希望实现自己的pinentry
(或使用适合您的非交互式工作流程的现有),然后将其设置为gpg-agent.conf