curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
感谢您的帮助
#1 楼
首先,您需要找到添加的密钥的密钥ID。通过以下命令执行此操作:sudo apt-key list
它将列出您拥有的所有键,每个条目如下所示:
pub 1024R/B455BEF0 2010-07-29
uid Launchpad clicompanion-nightlies
确定了要删除的密钥后,请使用命令
sudo apt-key del <keyid>
,其中<keyid>
已替换为要从密钥环中删除的密钥的实际密钥ID。 $ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
#2 楼
在16.10上,当您使用list命令时,不再显示短键ID,但实际上它是长十六进制的后8个字符。因此,例如,以下键的键ID
/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub rsa4096 2012-05-11 [SC]
8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092
uid [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>
密钥ID为EFE21092
评论
非常有帮助,谢谢。这对UX毫无帮助。
– SColvin
17年5月18日在11:27
@SColvin,您可以使用sudo apt-key del“ 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092”,并且我认为使用整个指纹更为安全,密钥ID可以重复(至少当您将PGP用于电子邮件,我读到您应该分享您的整个指纹,而不仅仅是键盘ID)。
–baptx
17年2月2日在12:14
非常有帮助,对于17.10也很真实!
– Hartmut P.
18年4月13日在21:15
并为18.04.1。
–罗斯·贝特曼
18-10-3在20:45
谢谢。糟糕的设计决策。
–布赖恩·史密斯(Brian Smith)
19 Mar 25 '19在19:54
#3 楼
我编写了一个简短的脚本,以简化操作,并使用字符串而不是id。如果键包含一个已知的唯一字符串,则可以使用我的脚本。例如就我而言,对于webmin
pub 1024D/11F63C51 2002-02-28
uid Jamie Cameron <jcameron@webmin.com>
sub 1024g/1B24BE83 2002-02-28
我确定系统上只有webmin密钥具有
jcameron
,而不是我使用此脚本删除相应的密钥。我将其另存为
~/removeAptKey
,并以
sudo ./removeAptKey jcameron
将输出保存为
/>
KEYID: 11F63C51
OK
这是我的脚本:
#!/bin/bash
function printKeys(){
echo "Installed keys are"
echo ""
sudo apt-key list
}
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
if [[ $# -eq 0 ]]
then
echo "No key name provided"
exit 1
fi
UNIQUE=
sudo apt-key list | grep "${UNIQUE}" -B 1 > result.temp
LENGTH=$(cat result.temp | wc -l)
if [[ ${LENGTH} -gt 2 ]]
then
echo "Attention you found more than 1 key. Use a more specific string."
printKeys
exit 2
fi
if [[ ${LENGTH} != 2 ]]
then
echo "Key not found. Doing nothing."
printKeys
exit 3
fi
KEYID=$(cat result.temp | grep 'pub' | cut -d " " -f 4 | cut -d "/" -f 2)
echo "KEYID: "$KEYID
apt-key del ${KEYID}
rm result.temp
首先,我得到了密钥块的上两行:
sudo apt-key list
:照例列出apt键grep '${UNIQUE}' -B 1
:仅使用包含唯一键字符串jcameron
和-B 1
的行在> result.temp
之前的行:将其保存在文件中(稍后将其删除)如果这恰好返回了两行(->正好有1个键)我继续:
grep 'pub'
:现在只取带有id为pup
的行cut -d " " -f 4
:取那行的第四个字(第一个是pub
,而不是第二个空格,而不是我们在``)之后的字符串。cut -d "/" -f 2
:只取/
之后的部分最后删除此键并清除
apt-key del ${KEYID}
(在我的情况下为11F63C51
)rm result.temp
:不再需要此文件评论
我在没有参数的情况下运行了它,它只是消灭了我所有的键。 ;(
–加百利博览会
18/12/21在23:11
如果有人碰了钥匙,我可以按照以下说明进行修复:askubuntu.com/a/145933/13693
–加百利博览会
18/12/22在2:29
??这怎么发生的?如果没有参数,它将以“没有提供键名”退出。
– derHugo
18/12/22在10:49
@derHugo不确定,但是if子句中的#可能是罪魁祸首吗?
–已清除
19年4月9日在15:51
@defuzed,如果您的意思是$#,则不。它返回给定参数的数量。
– derHugo
19年4月9日在17:51
#4 楼
在运行sudo apt-key list
后更新Ubuntu 20.04
您应该获得apt键列表:
/etc/apt/trusted.gpg
--------------------
pub rsa4096 2016-04-12 [SC]
EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796
uid [ unknown] Google Inc. (Linux Packages Signing Authority) <linux-packages-keymaster@google.com>
sub rsa4096 2019-07-22 [S] [expires: 2022-07-21]
pub rsa4096 2017-04-11 [SC] [expired: 2019-09-28]
D4CC 8597 4C31 396B 18B3 6837 D615 560B A5C7 FF72
uid [ expired] Opera Software Archive Automatic Signing Key 2017 <packager@opera.com>
pub rsa4096 2019-09-12 [SC] [expires: 2021-09-11]
68E9 B2B0 3661 EE3C 44F7 0750 4B8E C3BA ABDC 4346
uid [ unknown] Opera Software Archive Automatic Signing Key 2019 <packager@opera.com>
sub rsa4096 2019-09-12 [E] [expires: 2021-09-11]
pub rsa4096 2017-03-13 [SC]
8CAE 012E BFAC 38B1 7A93 7CD8 C5E2 2450 0C12 89C0
uid [ unknown] TeamViewer GmbH (TeamViewer Linux 2017) <support@teamviewer.com>
sub rsa4096 2017-03-13 [E]
在
uid
下,您具有应用程序的名称,例如:[ unknown] Opera Software Archive Automatic Signing Key 2019 <packager@opera.com>
,要删除的密钥在其上方:
D4CC 8597 4C31 396B 18B3 6837 D615 560B A5C7 FF72 <-- THAT'S THE KEY
uid [ expired] Opera Software Archive Automatic Signing Key 2017 <packager@opera.com>
,然后通过将该键放在双引号或单引号中将其删除,如下所示:
sudo apt-key del "D4CC 8597 4C31 396B 18B3 6837 D615 560B A5C7 FF72"
评论
这对我来说也很有效,可以取密钥中的最后8个字符并删除两者之间的空格:sudo apt-key del A5C7FF72
– Purefan
20年6月22日在6:53
是的...我认为,即使您使用该键的任何部分,它也可能会起作用,因为它会搜索整个键内的模式而没有空格
–lewis4u
20年6月22日在6:58
#5 楼
我知道我可能会迟到,但只想共享此单行命令即可实现。注意:仅当输出是唯一键时,此方法才有效。
Ubuntu版本最高为16.04(2018年12月22日更新):
apt-key del $(apt-key list | awk 'NR=='$(apt-key list | grep --line-number --regexp "FOOBAR" | cut --fields 1 --delimiter ":")'{print;exit}' | awk '{print }' | cut --fields 2 --delimiter "/")
其中
FOOBAR
是UID名称。16.10版以上的Ubuntu版本:
apt-key del $(apt-key list | awk 'NR=='`expr $(apt-key list | grep --line-number --regexp "FOOBAR" | cut --fields 1 --delimiter ":") - 1`'{print;exit}')
其中
FOOBAR
是UID名称。评论
我不确定为什么,但是在尝试运行您提供的16.04命令时出现错误。 awk:第1行:{或附近有语法错误{但是尖括号匹配,所以我不确定为什么这不起作用
–加百利博览会
18/12/21在22:45
@GabrielFair感谢您的注意,6月份它一直在工作(我从控制台复制粘贴了它),但现在似乎已更新,并且apt-key列表格式也已更改。现在,它似乎又开始工作了。 (编辑:记住以超级用户身份运行它)
– David Tabernero M.
18/12/22在0:47
评论
@Raymond没问题:)
– Nitin Venkatesh
2012年2月24日20:15在
啊,我看到唯一的ID在标为pub的行上,而不是标为uid的行上。
–ctrl-alt-delor
16年6月21日在7:59
在ubuntu 16.10上的结果似乎有些不同:pub rsa4096 2012-05-11 [SC] 8439 .... uid ....
–mxdsp
16年11月6日在16:17
看来需要更新18.04
–kennyB
19年2月16日在0:12
删除密钥后,我遇到了一个新问题。由于公共密钥不可用,无法验证以下签名:NO_PUBKEY,下一步我该怎么做?
– Corey
19年8月27日在3:10