Como corrijo o erro GPG "NO_PUBKEY"?

364

Eu adicionei alguns repositórios extras com o programa Software Sources. Mas quando recarrego o banco de dados do pacote, recebo um erro como o seguinte:

Erro W: GPG: http://ppa.launchpad.net confiável InRelease: As seguintes assinaturas não puderam ser verificadas porque a chave pública não está disponível: NO_PUBKEY 8BAF9A6F

Eu sei que posso consertá-lo usando apt-keyem um terminal, de acordo com a documentação oficial do Ubuntu. Mas eu gostaria de fazer isso graficamente. Existe uma maneira de fazer isso sem usar um terminal?

Agmenor
fonte
Relacionados: askubuntu.com/q/127326/178596
Wilf
"Um malvado"? Curioso o que você quis dizer com isso.
Michael Scheper
1
Você pode verificar este segmento SO para solução. Link para o site relacionado
Aniket Thakur
@MichaelScheper 'Existe um meio para não abrir um terminal?' = ~ 'Existe uma maneira de fazer isso sem um terminal?'
Wilf
@Wilf: Oh! Não pretendo resumir a gramática, mas isso me confundiu. A partir da referência que acabei de verificar, 'significa' é um substantivo singular e o que você quis dizer. dictionary.cambridge.org/dictionary/english/means Mas se você e o Agmentor estão usando alguma forma de inglês variante em que a gramática da pergunta está correta, eu adoraria ver uma referência a ela, apenas porque estou interessado em esse tipo de coisas. ☺
Michael Scheper

Respostas:

211

De longe, a maneira mais simples de lidar com isso agora é com o Y-PPA-Manager (que agora integra o launchpad-getkeysscript a uma interface gráfica).

  1. Para instalá-lo, primeiro adicione o repositório webupd8 para este programa:

    sudo add-apt-repository ppa:webupd8team/y-ppa-manager
    
  2. Atualize sua lista de software e instale o Y-PPA-Manager:

    sudo apt-get update
    sudo apt-get install y-ppa-manager
    
  3. Execute y-ppa-manager (ou seja, digite y-ppa-managere pressione a tecla Enter).

  4. Quando a janela principal do y-ppa-manager aparecer, clique em "Avançado".

  5. Na lista de tarefas avançadas, selecione "Tente importar todas as chaves GPG ausentes" e clique em OK.

    Você Terminou! Como a caixa de diálogo de aviso diz quando você inicia a operação, pode demorar um pouco (cerca de 2 minutos para mim), dependendo de quantos PPA você possui e da velocidade da sua conexão.

monotasker
fonte
18
Não é realmente útil em um servidor web, pois ele instala o X11. Não use esse método se estiver em uma edição para servidor, verifique a resposta do karthick87!
Goncalotomas
2
Isso permite verificar as chaves importadas ou você está simplesmente importando cegamente tudo (e, portanto, confiando em todos que possuem um PPA)?
Pa Elo Ebermann
2
Você está importando (e confiando) as chaves para cada PPA adicionado ao seu sistema. A suposição é que você confia nesses PPAs e os retirou antes de adicioná-los via apt.
monotasker
6
Essa resposta é fácil , de longe , e realmente requer menos comandos que esta resposta "gráfica".
jpaugh
1
Mas a pergunta pedia um método gráfico.
precisa saber é o seguinte
557

Execute os seguintes comandos no terminal

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>

onde <PUBKEY>está sua chave pública ausente para o repositório, por exemplo 8BAF9A6F.

Então atualize

sudo apt-get update

MÉTODO ALTERNATIVO:

sudo gpg --keyserver pgpkeys.mit.edu --recv-key  <PUBKEY>
sudo gpg -a --export <PUBKEY> | sudo apt-key add -
sudo apt-get update

Observe que, ao importar uma chave como essa, apt-keyvocê está dizendo ao sistema que confia na chave que está importando para assinar o software que seu sistema usará. Não faça isso a menos que tenha certeza de que a chave é realmente a chave do distribuidor de pacotes.

karthick87
fonte
2
@Naruto Isso é normal. Isso significa que a lista não mudou no servidor.
ζ--
9
Você pode simplesmente passar o NO_PUBKEYvalor como parâmetro de chaves. por exemplo, erro GPG NO_PUBKEY 3766223989993A70 => sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3766223989993A70
SMMousavi
23
8BAF9A6F <- onde você conseguiu esse número?
precisa
13
O número 8BAF9 ... é o que você vê no erro original. Seria algo como NO_PUBKEY 8BAF ...
Alex
9
Se alguém adulterasse os dados entre mim e o repositório e substituísse as coisas que eles assinaram, isso acabaria comigo apenas adicionando a chave que eles usavam, mais ou menos cegamente. Então, qual é o processo para verificar se a chave é a correta?
Mc0e
43

Isso acontece quando você não possui uma chave pública adequada para um repositório.

Para resolver esse problema, use este comando:

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 9BDB3D89CE49EC21

que recupera a chave do servidor de chaves do ubuntu. E então isso:

gpg --export --armor 9BDB3D89CE49EC21 | sudo apt-key add -

que adiciona a chave ao apt chaves confiáveis.

A solução pode ser encontrada aqui e aqui e aqui .

Pedram
fonte
4
Se o hkp: //keyserver.ubuntu.com não estiver funcionando, use este pgpkeys.mit.eduservidor.
RajaRaviVarma 30/10
1
Esta resposta resolveu meu problema com o repositório Kylin. O método de entrada sogou pinyin adicionou a fonte à minha /etc/apt/sources.list.d/pasta, mas aparentemente não importou a chave gpg. Boa resposta, simples e
direto
1
Obrigado! Trabalhou para mim resolver o problema do repositório php.
precisa
1
Esta resposta resolveu minha atualização parahttp://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
mvw 21/02
e é bem possível que você não tenha gerado a chave do seu sistema antes. Por conseguinte, antes de seguir os passos acima usam - gpg --gen-key (- referências packaging.ubuntu.com/html/getting-set-up.html )
parasrish
35

Você precisa obter e importar a chave.

Para obter a chave de um PPA, visite a página Launchpad do PPA. Em todas as páginas do PPA no Launchpad, você encontrará este link (2), depois de clicar em 'Detalhes técnicos sobre este PPA' (1):

imagem 1

Siga-o e clique no link ID da chave (3):

imagem 2

Salve a página, este é o seu arquivo de chave.


Agora é hora de importá-lo:

  • Applications > Software Center,
  • Edit > Software sources...,
  • Coloque sua senha,
  • Vá para a Authenticationguia e clique em Import Key File..., finalmente
  • Selecione o arquivo de chave salvo e clique em OK.
htorque
fonte
1
Não perca tempo, veja a resposta abaixo.
Felipe
5
@FelipeMicaroniLalli, a questão era como adicionar um pubkey usando a GUI, não o terminal, então essa resposta foi perfeita.
Chris Woods,
Agora é muito mais fácil e rápido fazer isso com o y-ppa-manager (também um aplicativo de GUI). Veja minha resposta abaixo.
precisa
1
OK, mas e se o repositório não for um ubuntu ppa. Por exemplo Intel executar seu próprio repositório de drivers de hardware de vídeo em download.01.org
mc0e
Ótimo guia passo a passo, muito obrigado! realmente útil para quem não conseguiu adicionar a chave via apt-key.
Roy Ling
12

O apt pode lidar apenas com 40 chaves em /etc/apt/trusted.gpg.d. 41 teclas e você receberá o erro GPG "nenhuma chave pública encontrada", mesmo se você seguir todas as etapas para adicionar as chaves ausentes.

Verifique se há alguma chave não utilizada neste arquivo do (s) ppa (s) que você não usa mais. Se todos estiverem em uso, considere remover alguns ppa (s) junto com os arquivos-chave correspondentes em /etc/apt/trusted.gpg.d

Além disso, usando

sudo apt-key adv

É considerado um risco de segurança e não é recomendado, pois você está " minando todo o conceito de segurança, pois essa não é uma maneira segura de receber chaves por vários motivos (como: hkp é um protocolo de texto sem formatação, keyids curtos e até longos podem ser forjados,… ) ". http://ubuntuforums.org/showthread.php?t=2195579

Acredito que a maneira correta de adicionar chaves ausentes (por exemplo, 1ABC2D34EF56GH78) é

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78
gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -
mchid
fonte
1
Eu achei mais fácil simplesmente apagar todas as chaves de /etc/apt/trusted.gpg.d e então proceder a resposta aceita askubuntu.com/a/386003/284664
Janot
@mchid Você pode citar um documento / URL que fale sobre esse limite de 41 chaves?
SebMa 27/03
@SebMa O link está publicado na minha resposta e faz referência a um bug no Debian que foi impactado por esse limite. Aqui está uma âncora para a postagem real no link que menciona isso: ubuntuforums.org/showthread.php?t=2195579#post_message_12882784 Não tenho certeza se existe documentação real sobre isso, mas o número 40 pode ter sido usado porque "40 "traduz para" muito "em vários idiomas diferentes.
mchid 27/03
@SebMa No entanto, o limite existe ou existia no momento desta resposta e por algum tempo depois também. Eu experimentei pessoalmente esse limite de 41 chaves e o corrigi excluindo chaves não usadas para adicionar uma nova chave quando já existissem 40 chaves para evitar esse erro.
mchid 27/03
1
@SebMa no wiki.debian.org/SecureApt
mchid 27/03
9

Há um pequeno script empacotado no PPA WebUpd8, o qual vincularemos como um único download .deb, para que você não precise adicionar o PPA inteiro - o que importa automaticamente todas as chaves GPG ausentes.

Baixe e instale o Launchpad-getkeys (ignore o ~ natty em sua versão, ele funciona com todas as versões do Ubuntu do Karmic até o Oneiric). Depois de instalado, abra um terminal e digite:

sudo launchpad-getkeys

Se você está atrás de um proxy, as coisas são um pouco mais complicadas, então veja isso para mais informações

Alin Andrei
fonte
1
É realmente o que eu faço agora, desde que eu vi esse programa apresentado no seu site. No entanto, o objetivo da questão era saber como fazê-lo de maneira gráfica.
Agmenor
O script launchpad-getkeys agora está integrado ao programa Y-PPA-manager. launchpad.net/~webupd8team/+archive/y-ppa-manager
monotasker
5

Eu enfrentei o mesmo problema ao instalar o Heroku. O link abaixo resolveu meu problema -

http://naveenubuntu.blogspot.in/2011/08/fixing-gpg-keys-in-ubuntu.html

Após corrigir o NO_PUBKEYproblema, o problema abaixo permaneceu

W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering <[email protected]>

Para corrigi-lo, executei os seguintes comandos no terminal:

sudo -i  
apt-get clean  
cd /var/lib/apt  
mv lists lists.old  
mkdir -p lists/partial  
apt-get clean  
apt-get update  

Fonte - Link para resolvê-lo

dennyac
fonte
4

Verifique se você apt-transport-httpsinstalou:

dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update; 
sudo apt-get install apt-transport-https -y" 

Adicionar repositório:

curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add - 
echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list 

Instale o Skype para Linux:

sudo apt-get update 
sudo apt-get install skypeforlinux -y

Fonte: https://community.skype.com/t5/Linux/Skype-for-Linux-Beta-signatures-couldn-t-be-verified-because-the/td-p/4645756

Eduardo Cuomo
fonte
3

De maneira mais geral, o método a seguir deve funcionar para todos os repositórios. Primeiro, pesquise, com a eventual ajuda de um mecanismo de pesquisa, um texto no site do provedor do programa, com a seguinte aparência:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (GNU/Linux)
[...]
-----END PGP PUBLIC KEY BLOCK-----

Esse texto é exibido, por exemplo, em http://deb.opera.com . Copie a passagem, cole-a em um arquivo vazio criado na área de trabalho. Isso resulta no arquivo de chave.

Continue com a importação da chave:

  • Aplicativos> Sofware Center
  • Editar> Fontes de software ..., digite a senha
  • Na guia Autenticação, clique em 'Importar arquivo de chave ...'
  • Selecione o arquivo de chave salvo e clique em 'Ok'.

Agora você pode remover o arquivo de chave criado anteriormente.

Agmenor
fonte
3

Boa! Finalmente encontrei o caminho!

Eu testei todos os métodos para corrigir o erro GPG NO_PUBKEY e nada funciona para mim.

Eu apaguei todo o conteúdo da pasta /etc/apt/trusted.gpg.d

cd /etc/apt/trusted.gpg.d
sudo rm -R *
sudo apt-get update

E eu uso o método Y-PPA-Manager porque tenho preguiça de criar manualmente todos os pubkey (muitos): http://www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/

execute o sudo apt-get update novamente e finalmente tudo funciona muito bem agora! Tanques!

Fonte: post # 17 on https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540

NeurOSick
fonte
Essa foi a única coisa que funcionou para mim também. Presumivelmente, um arquivo-chave corrompido em algum lugar?
donnek
0

Eu tive o mesmo problema com o cliente Updater do DynDNS.

Acontece que eram apenas chaves expiradas.

Reinstalar o software (baixar um novo .debdo site e usar o Software Center para reinstalar) corrigiu o problema.

Mensagem de erro para referência:

W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
Cranky
fonte