You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过脚本修改GPG密钥的口令?

GPG 非交互式修改口令脚本实现方案

实现原理

修改 GPG 口令需要先后输入 旧口令1次、新口令2次,仅用单个 passphrase-fd 无法满足多轮输入需求,因此结合 --command-fd 参数传入后续的新口令即可实现全流程非交互式操作。

可用脚本示例

# 替换为你的实际密钥ID
TARGET_KEY_ID="XXXXXXXX"
# 旧口令(建议通过安全方式传入,不要硬编码)
OLD_PASSPHRASE="你的旧口令"
# 新口令(建议通过安全方式传入,不要硬编码)
NEW_PASSPHRASE="你的新口令"

gpg --batch --pinentry-mode loopback \
  --passphrase-fd 3 \
  --command-fd 4 \
  --change-passphrase "$TARGET_KEY_ID" \
  3<<<"$OLD_PASSPHRASE" \
  4<<EOF
$NEW_PASSPHRASE
$NEW_PASSPHRASE
EOF

参数说明

  • --batch:开启批处理模式,禁用所有交互式弹窗/提示,保证脚本可以后台执行
  • --pinentry-mode loopback:允许 GPG 从脚本传入的文件描述符读取口令,绕过默认的 pinentry 交互工具
  • --passphrase-fd 3:从文件描述符3读取旧解锁口令,和你现有验证逻辑的用法完全一致
  • --command-fd 4:从文件描述符4读取后续交互内容,这里传入两行相同的新口令,对应修改口令时要求的两次新口令确认步骤

注意事项

  • 不要在脚本中硬编码明文口令,建议通过环境变量、加密配置文件或者企业级密钥管理系统传入敏感的口令信息
  • 该方案兼容 GPG 2.1及以上版本,更低版本的 GPG 可能需要额外添加 --no-use-agent 参数适配

内容的提问来源于stack exchange,提问作者sunknudsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:36:03