scr*_*uss 64 linux command-line gnupg
我的 gnupg 密钥环包含数百个不必要的条目。我如何从中删除过期、撤销和未签名的密钥?
我想保留已签署我的密钥的密钥,并仅在需要时导入新密钥。我之前为我的密钥签名者导入了整个信任网络。我的一位钥匙签名者似乎在他的旅行中获得了大量签名,而这些签名现在正在堵塞我的钥匙圈。
Mel*_*lan 65
来自 Charles Lockhart 的GPG 备忘单:
我已用作
User Name
与密钥关联的名称。抱歉,这不是很有想象力。我认为gpg 在其用户分配方面相当广泛,例如,我的私钥的名称是“Charles Lockhart”,但我可以通过输入“Lockhart”来引用它。这没有任何意义,对不起。????????????
删除公钥(从您的公钥环中):
Run Code Online (Sandbox Code Playgroud)$ gpg --delete-key "User Name"
这将从您的公钥环中删除公钥。
注意:如果您的私钥环上有一个与此公钥关联的私钥,您将收到错误消息!您必须首先从您的私钥环中删除此密钥对的私钥。删除私钥(私钥环上的密钥):
Run Code Online (Sandbox Code Playgroud)$ gpg --delete-secret-key "User Name"
这将从您的密钥环中删除密钥。
Luc*_*cas 18
gpg 的手册页建议不要解析 的正常输出--list-keys
,但它提供了可解析的输出--with-colons
。
这将删除所有过期或撤销的公钥:
gpg --list-keys --with-colons \
| awk -F: '$1 == "pub" && ($2 == "e" || $2 == "r") { print $5 }' \
| xargs gpg --batch --yes --delete-keys
Run Code Online (Sandbox Code Playgroud)
doc/DETAILS
源代码中,我的发行版将它们安装在/usr/share/doc/gunpg/DETAILS
)-F:
小智 8
我有一个计划每周从 cron 运行的 bash 脚本来处理这个:
#!/bin/bash
# Clean up the GPG Keyring. Keep it tidy.
# blog.lavall.ee
echo -n "Expired Keys: "
for expiredKey in $(gpg2 --list-keys | awk '/^pub.* \[expired\: / {id=$2; sub(/^.*\//, "", id); print id}' | fmt -w 999 ); do
echo -n "$expiredKey"
gpg2 --batch --quiet --delete-keys $expiredKey >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo -n "(OK), "
else
echo -n "(FAIL), "
fi
done
echo done.
echo -n "Update Keys: "
for keyid in $(gpg -k | grep ^pub | grep -v expired: | grep -v revoked: | cut -d/ -f2 | cut -d' ' -f1); do
echo -n "$keyid"
gpg2 --batch --quiet --edit-key "$keyid" check clean cross-certify save quit > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo -n "(OK), "
else
echo -n "(FAIL), "
fi
done
echo done.
gpg2 --batch --quiet --refresh-keys > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Refresh OK"
else
echo "Refresh FAIL."
fi
Run Code Online (Sandbox Code Playgroud)