无法验证PGP签名:rsync 3.1.3签名验证失败求助
我帮你拆解下遇到的两个核心问题,一步步来解决:
先处理奇怪的armor header错误
你看到的gpg: unknown armor header: Version: GnuPG v1,十有八九是签名文件格式出问题了——要么是下载时把签名和其他说明内容混在了一起,要么是文件下载不完整。
先打开你的signature.sig文件看看,正常的GPG签名文件应该是这样的结构:
-----BEGIN PGP SIGNATURE----- # 这里是一堆签名字符 -----END PGP SIGNATURE-----
如果里面混了Version: GnuPG v1这行多余内容,直接把它删掉,只保留前后的PGP签名块,保存文件后再继续。
然后解决公钥找不到的问题
报错里的Can't check signature: public key not found,说明你的GPG密钥环里没有rsync发布者的公钥(就是那个DSA key ID 4B96A8C5)。
执行下面的命令导入这个公钥:
gpg --recv-keys 4B96A8C5
要是这个命令因为网络连不上默认密钥服务器失败,试试指定Ubuntu的密钥服务器:
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 4B96A8C5
最后重新验证签名
做完上面两步,再跑验证命令:
gpg --verify signature.sig rsync.tar.gz
如果成功的话,你会看到类似这样的输出:
gpg: Good signature from "Wayne Davison wayned@users.sourceforge.net"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
别担心那个警告,它只是说你还没手动信任这个公钥,只要看到Good signature就说明文件是没问题的。
顺便说下你用的--decrypt命令
gpg --decrypt是用来解密加密文件的,而签名文件是用来验证文件完整性的,所以这个命令根本不适用,报错很正常,以后验证签名只用--verify就对了。
内容的提问来源于stack exchange,提问作者Nisba




