我想以gpg --card-edit; verify; quit
非交互方式执行来解锁 gpg 硬件令牌(即智能卡或 yubikey)。
我的用例是:
- 输入密码,例如通过 ssh
- 将其存储在内核密钥环中
- 在需要时将其传递给硬件令牌
一个可行的解决方案是expect
,我曾经autoexpect
为此创建一个脚本,但它包含用户密码,并且相当笨拙,并且依赖于特定 gpg 版本的输出。
scdaemon
可能是一种选择,但我不确定传递原始命令是否是个好主意。我担心很容易破坏令牌。
也许有一些可用于智能卡大规模个性化的工具/脚本可以使用?
我愿意听取关于下一步该尝试的建议。谢谢!
答案1
在实验过程中,我找到了一种使用的解决方案gpg-connect-agent 'SCD CHECKPIN' /bye
。
通过编写自定义 pinentry 程序,我可以使用 Assuan 协议注入静态密钥。
我必须改变这个 pinentry 程序来从内核密钥环中读取密钥keyctl
。