linux - 如何在不输入密码的情况下签署 rpm 包?
问题描述
我正在尝试签署我使用 GPG 创建的 RPM 包而不输入密码,输入我可以签名的密码,但是不输入密码正在打开消息框Please enter the passphrase to unlock the OpenPGP secret key
,我需要在签署包时不要请求密码,因为这将是一个以“静默模式”执行的脚本。我可能有错误的命令,但我很难找到解决方案。
这是我要执行的命令,即使这样也要求输入密码:
gpg --batch --passphrase "78910" --clearsign test-1-0.x86_64.rpm
使用第二个命令,不需要密码:
echo "78910" | gpg --batch --passphrase-fd 0 --clearsign test-1-0.x86_64.rpm
但是,不会执行签名并返回如下所述的错误:
gpg: signing failed: Inappropriate ioctl for device gpg: /test-1-0.x86_64.rpm: clear-sign failed: Inappropriate ioctl for device
使用这第三个命令,报告的错误是不同的:
echo "78910" | gpg --batch --passphrase-fd 0 ~/.gnupg/trustdb.gpg --clearsign test-1-0.x86_64.rpm
错误信息:
gpg: Note: '--clearsign' is not considered an option gpg: WARNING: no command supplied. Trying to guess what you mean ... usage: gpg [options] [filename]
这是我创建 gpg 密钥的代码,我尝试在没有密码的情况下创建,但是当密码值为空时我收到错误。
#!/bin/bash
echo "Key-Type: 1" > gen-key-script
echo "Key-Length: 1024" >> gen-key-script
echo "Subkey-Type: 1" >> gen-key-script
echo "Subkey-Length: 1024" >> gen-key-script
echo "Name-Real: gpg test" >> gen-key-script
echo "Name-Email: test@test.com" >> gen-key-script
echo "Expire-Date: 0" >> gen-key-script
echo "Passphrase: 78910" >> gen-key-script
echo "" >> gen-key-script
#---------------------------------------------------------
# GENERATE THE KEY
#---------------------------------------------------------
gpg --batch --gen-key gen-key-script
#---------------------------------------------------------
# .RPMMACROS
#---------------------------------------------------------
echo "%_gpg_name gpg test <test@test.com>" > ~/.rpmmacros
解决方案
如果您的 GPG 密码为空:
我知道这是一个有点晚的答案,但它最适合我,因为我没有 GPG 密码(空密码)。您可以实现一些技术以在 CLI 上安全地传递它而无需键入它,无论如何您的密码是空的,我认为这是一个很好的解决方案。
echo "" | setsid rpmbuild -bb --sign <filename>.spec
来源:https ://rpm-list.redhat.narkive.com/7hkHM9bp/signing-rpms-without-a-passphrase#post4
推荐阅读
- java - 如何将屏幕位置转换为数组索引?
- reactjs - React PayPal 不更新 setState 值
- three.js - Three.js 中的相机旋转
- c# - 将 Microsoft.IdentityModel.Clients.ActiveDirectory 升级到 5.2.9 后 AcquireTokenByAuthorizationCodeAsync 抛出错误
- python-3.x - 现有连接被远程主机强行关闭,Python3
- python - 使用带有 zmq 和 opencv 的暗网
- python - 我想创建一个具有所需大小的“空”网格(1 表示“空”,1 表示方形网格,1 表示矩形)
- java - 使用 Kotlin 保存图像
- dask - 将矩阵作为 dask 数据帧的单元格
- r - 错误:“calculate_intervals”不是从“命名空间:forecastML”导出的对象