我正在尝试使用 GPG 签署 yum repo 元数据,这是 Jenkins 作业的一部分。事实证明,这比我最初想象的要困难,但我确信很多人肯定已经这样做了。
我已经弄清楚了,我可以使用以下方法在终端上完成此操作:-
gpg --detach-sign --armor --local-user "Our Team" repomd.xml
但是这会弹出一个 curses 样式的窗口,要求输入密钥,我想将其作为 Jenkins 作业的一部分自动执行。我使用 expect 来签署实际的 RPM,效果很好,但我认为我无法使用此 gpg / curses 方法做到这一点。有没有办法告诉 gpg 只接受来自键盘的输入,而不是弹出文本输入框?(我一直在阅读手册页,但它真的很庞大,我陷入了困境)。
会继续尝试,但希望有人已经解决了这个问题?
答案1
手册页为您提供了传递密码的几个选项:
--passphrase-fd n
Read the passphrase from file descriptor n. Only the first line
will be read from file descriptor n. If you use 0 for n, the
passphrase will be read from STDIN. This can only be used if
only one passphrase is supplied.
--passphrase-file file
Read the passphrase from file file. Only the first line will be
read from file file. This can only be used if only one
passphrase is supplied. Obviously, a passphrase stored in a file
is of questionable security if other users can read this file.
Don't use this option if you can avoid it.
--passphrase string
Use string as the passphrase. This can only be used if only one
passphrase is supplied. Obviously, this is of very questionable
security on a multi-user system. Don't use this option if you
can avoid it.
我不确定为什么当你想自动签名软件包时,你会提到从键盘接受密码。没有人在场,也不会有键盘。最好的办法可能是使用--passphrase-fd
并通过文件描述符传递密码,正如 womble 在他的评论中提到的那样。