gpg: 由于缺少密钥,1 个签名未被检查

gpg: 由于缺少密钥,1 个签名未被检查

不能sudo apt-get update

Ign:8 http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04  Release.gpg
Reading package lists... Done    
W: GPG error: http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04  Release: The following signatures were invalid: EXPKEYSIG 5A7D1D38BEB6D886 home:Horst3180 OBS Project <home:[email protected]>
E: The repository 'http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04  Release' is not signed.

经过多次尝试,我得到

1 signature not checked due to a missing key

我的尝试是:

sudo apt-key adv --keyserver hkp://keys.gnupg.net:80 --recv-keys 5A7D1D38BEB6D886
Executing: /tmp/apt-key-gpghome.f5yVraTkTa/gpg.1.sh --keyserver hkp://keys.gnupg.net:80 --recv-keys 5A7D1D38BEB6D886
gpg: key 5A7D1D38BEB6D886: 1 signature not checked due to a missing key
gpg: key 5A7D1D38BEB6D886: "home:Horst3180 OBS Project <home:[email protected]>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

我是不是更接近目标了?其他没有结果的尝试包括:

  1. 此命令

    wget -nv http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04/Release.key -O Release.key
    
    sudo apt-key add - < Release.key
    
  2. 软件网站opensuse.org

    sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04/ /' > /etc/apt/sources.list.d/home:Horst3180.list"
    wget -nv https://download.opensuse.org/repositories/home:Horst3180/xUbuntu_16.04/Release.key -O Release.key
    sudo apt-key add - < Release.key
    
  3. 此命令

    sudo rm /var/lib/apt/lists/* -vf
    
  4. 此命令

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5A7D1D38BEB6D886
    

    返回

    Executing: /tmp/apt-key-gpghome.9tPKjtyC1E/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 5A7D1D38BEB6D886
    gpg: keyserver receive failed: No keyserver available
    

请注意Horst3180 的家居项目,GPG 密钥5A7D1D38BEB6D886的到期日期为2019-10-02,因此该密钥似乎不再有效。

答案1

一般来说,如果 gpg 密钥已过期,当您不是 repo 的所有者时,您什么也做不了,只能尝试联系管理员。

如果你信任这个 repo,或者确实需要其中的一些东西,而且不太关心这个安全功能,你也可以通过--allow-unauthenticated向 apt-get 添加选项来跳过 gpg 检查。

例子:sudo apt-get --allow-unauthenticated updatesudo apt-get -y --allow-unauthenticated install foo

您还可以使用/etc/apt/apt.conf.d/目录中自己的配置文件使此选项永久生效。在您的配置文件中,只需添加APT::Get::AllowUnauthenticated "true"; 节即可。

注意:如果选择永久选项,您应该小心添加您的选项,以便它只在这个特定的 repo 上生效,而不是对其他每个 repo 生效,因为它被视为安全风险。

答案2

当密钥仍然有效时,也可能会出现同样的错误。我有一个 Release.key 在一台 ubuntu 机器上运行良好,但在另一个系统上

apt-key add Release.key爆炸式增长

 gpg: invalid key resource URL '/tmp/apt-key-gpghome.L3TpJ04C0i/isv:ownCloud:desktop.asc.gpg'
 gpg: keyblock resource '(null)': General error
 gpg: key 4ABE1AC7557BEFF9: 1 signature not checked due to a missing key
 gpg: key 4ABE1AC7557BEFF9: 1 signature not checked due to a missing key
 gpg: key 3B4FE6ACC0B21F32: 3 signatures not checked due to missing keys
 gpg: key D94AA3F0EFE21092: 3 signatures not checked due to missing keys
 gpg: key 871920D1991BC93C: 1 signature not checked due to a missing key
 gpg: Total number processed: 6
 gpg:       skipped new keys: 6

但是 eggpg --import < Release.key可以很好地导入密钥。(知道这一点很好,但对 apt 没有帮助。)

手动解决方法(但是对于过期的密钥则不起作用):

cat Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/owncloud-test.gpg

之后apt update成功,apt install ...没有任何允许未经身份验证的诡计。似乎 apt-key add 在我的某个系统上过于挑剔。

答案3

您可以通过删除有问题的文件来解决此问题。就我而言,错误是gpg: invalid key resource URL '/tmp/apt-key-gpghome.HrtqocacFC/home:manuelschneid3r.asc.gpg'。一个简单的方法sudo rm "/etc/apt/trusted.gpg.d/home:manuelschneid3r.asc"解决了这个问题。

相关内容