“Nenhuma chave pública disponível” na atualização do apt-get

133

Ao executar apt-get update, recebo o seguinte erro:

root@ADS3-Debian6:/home/aluno# apt-get update
Atingido http://sft.if.usp.br squeeze Release.gpg
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-en
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt_BR

(...)

Obter:10 http://security.debian.org squeeze/updates/non-free i386 Packages [14 B]
Baixados 612 kB em 4s (125 kB/s)                    
Lendo listas de pacotes... Pronto
There is no public key available for the following key IDs: 8B48AD6246925553
Aquele cara brasileiro
fonte
2
... e aquela corda que você escolheu é um pouco importante. Ele ia deixar-nos a identificar quais teclas você está faltando (assumindo instalar o chaveiro pacotes de preferência de confiança mídia que ruda sugeriu não ajuda)
derobert
1
Você não deve deixar seu gato andar no teclado assim. :-) ⁠
G-Man

Respostas:

173

As outras respostas funcionarão ou não, dependendo de a chave '8B48AD6246925553' estar ou não presente nos pacotes indicados.

Se você precisar de uma chave, precisará obtê-la e, onde encontrá-la, ela estará em um servidor de chaves (muito provavelmente qualquer servidor de chaves fará):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
mariotomo
fonte
Isso funcionou para mim também e não outras respostas aqui ..
Sai Kiran
@starbeamrainbowlabs agora é! =)
Aquele cara brasileiro
@ThatBrazilianGuy: D
starbeamrainbowlabs
4
Existe alguma maneira de determinar se a chave recebida é leggit para que eu possa executar uma operação tão perigosa como adicionar apt-trust global a alguma chave arbitrária? Existe alguma maneira de verificar a credibilidade da chave depois que ela foi recebida? Quais são as etapas a serem executadas para verificar a chave? Por exemplo, a única coisa que você tem é ftp-master.debian.org/keys/ziyi_key_2002.asc. Então, como você consegue a chave mais atual sem quebrar a cadeia de confiança?
Tino
1
@ThatBrazilianGuy: O fato de ser sua pergunta não lhe dá o direito de vandalizar uma resposta.
G-Man
76

Eu recomendo que você siga a resposta da @ mariotomo em vez das etapas abaixo:


De acordo com Não há chave pública disponível para o seguinte ID de chave , isso irá corrigi-lo:

sudo aptitude install debian-archive-keyring

Referências

Aquele cara brasileiro
fonte
Os últimos 8 dígitos hexadecimais são compartilhados com isso, então provavelmente está reclamando de chiado. Lamentável que o OP tenha optado por: pub 4096R / 46925553 27/04/2012 [expira em: 2020-04-25] uid Chave de Assinatura Automática do Arquivo Debian (7.0 / wheezy) <[email protected]>
Martin Dorey
5
É debian-keyringrealmente necessário? Funcionou para mim com apenas debian-archive-keyring.
X-yuri
Não é de surpreender que diferentes números hexadecimais possam exigir soluções diferentes. Coloquei aspas ao redor do número na minha pesquisa no Google, para forçar uma pesquisa literal desse número, e cheguei nesta página, que corrigiu o meu problema: reddit.com/r/linux4noobs/comments/4grdo7/… (resposta de @ mariotomo pode ter trabalhado muito-I não tentar)
Michael Scheper
debian-keyringnão é necessário.
x-yuri
38

Eu recomendo:

$ sudo apt-get install debian-archive-keyring
$ sudo apt-key update

Isso é melhor do que outras abordagens, porque não é instalado debian-keyring, o que é grande e 99% do tempo desnecessário.

Greg Alexander
fonte
1
Era tudo o que eu precisava - funcionou muito bem para mim!
harperville
Trabalhe como um encanto!
Wilbeibi
1
Essa foi a melhor solução para mim, pois se encaixa melhor em um contêiner do Docker. No entanto, observe que (pelo menos no Docker) você deve instalar apenas este pacote primeiro, depois fazer um segundo apt-get updatee depois instalar os pacotes que realmente deseja.
Malvineous
Debian 10: Aviso: 'apt-key update' está obsoleto e não deve mais ser usado! Nota: Na sua distribuição, este comando é não operacional e, portanto, pode ser removido com segurança
aexl 30/09
De fato, você pode precisar instalar o debian-archive-keyring mesmo se você tiver o debian-keyring instalado em sua versão mais recente
Ángel
17

O erro Não há uma chave pública disponível para os seguintes IDs de chave indica um grave problema de segurança : um pacote do sistema operacional não pode ser verificado quanto à integridade de sua chave pública, porque está ausente.

Se a mensagem fosse:

There is no public key available for the following key IDs: 1397BC53640DB551

Você pode usar este comando para descobrir qual repositório usa a chave:

for n in `ls /var/lib/apt/lists/*gpg`; do echo "$n" ; gpg --list-packets "$n" | grep 1397BC53640DB551; done

Que neste exemplo é o repositório do Google para Chrome:

/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release.gpg

Se você confia no Google, em seu governo, etc., deve descobrir onde está a chave e adicioná-la com:

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
Ivan Ogai
fonte
Corrigido para mim :) Obrigado! Mas apenas curioso, o que estava errado? O que o primeiro comando faz e o que o segundo faz? Isso deve resolver todos os problemas? Meu problema também foi com o Google Chrome.
Rohan
E o primeiro comando muda alguma coisa com o gpg? Ele diz que criou algum arquivo conf gpg.conf e não sei se quero isso.
Rohan
O primeiro procura a chave na sua lista de pacotes para ver o pacote incorreto. O segundo baixa a chave e a adiciona ao seu sistema. O primeiro comando não é útil neste caso, mas é bom como uma abordagem geral.
Marco Sulla
3

Eu enfrentei o mesmo problema no Linux Mint (Kernel versão 3.13.0-24) e consegui resolvê-lo usando os comandos:

gpg --recv-keys <the-reported-key>

gpg --export <the-reported-key> | apt-key add -

Pontos a serem observados:

1) Os comandos foram executados em ordem 2) Os comandos foram executados como usuário root

Cortesia desta resposta.

Ankur Kumar
fonte
1

Como uma alternativa:

$ sudo apt-get install debian-keyring debian-archive-keyring
$ sudo apt-key update
abdiansah.wordpress.com
fonte
6
Por favor, não anuncie seu blog em suas respostas. É para isso que serve sua biografia.
slm
1

Minha resposta é uma pequena atualização (IMHO, YMMV) no @mariotomo (que eu votei) no seguinte script de bash

  • também usa gpg
  • parametriza mais
  • (também usa um servidor de chaves diferente, embora neste caso eu suspeite que isso faça pouca diferença)

Você também pode comentar a evallinha para uma "execução a seco": o scriptlet mostrará apenas o que pretende fazer, sem realmente fazê-lo. Apenas certifique-se de alterar o valor de NO_PUBKEYcada vez que você usar isso (você também pode alterar KEYSERVERconforme desejado):

NO_PUBKEY='1397BC53640DB551' # CHANGE TO THE VALUE CITED IN YOUR ERROR MESSAGE!
KEYSERVER='keys.gnupg.net'

NO_PUBKEY_LEN="${#NO_PUBKEY}"
echo "NO_PUBKEY_LEN='${NO_PUBKEY_LEN}'"     # for sanity or debugging
# note following works because bash arrays have 0-based indices
NO_PUBKEY_2ND_HALF_START=$(( NO_PUBKEY_LEN/2 ))
echo "NO_PUBKEY_2ND_HALF_START='${NO_PUBKEY_2ND_HALF_START}'" # ditto
NO_PUBKEY_2ND_HALF="${NO_PUBKEY:${NO_PUBKEY_2ND_HALF_START}}"
echo "NO_PUBKEY_2ND_HALF='${NO_PUBKEY_2ND_HALF}'"             # ditto

for CMD in \
  'date' \
  "gpg --keyserver ${KEYSERVER} --recv-keys ${NO_PUBKEY_2ND_HALF}" \
  'date' \
  "gpg -a --export ${NO_PUBKEY_2ND_HALF} | sudo apt-key add -" \
; do
  echo -e "${CMD}"
  eval "${CMD}"
done
TomRoche
fonte
0

Execute killall -q gpg-agentse as outras soluções não funcionarem. Isso pode funcionar.

Eu estava recebendo um erro semelhante para um repositório PPA no Ubuntu 18.04 e depois de tentar várias soluções na Internet no último mês, apenas tropecei no gpg-agent e o matei. Em seguida, os repositórios do PPA começaram a ser atualizados sudo apt-get update. Eu sei que isso pode comprometer a segurança, mas às vezes você precisa de um pacote de um PPA, e o GPG simplesmente não permite. Mais tarde, você inicia o gpg-agent novamente e as coisas voltam ao normal.

MSharq
fonte
-1

Isso funcionou para mim:

Solução rápida:

sudo rm -f /etc/apt/trusted.gpg

( Fonte )

Jakob
fonte