Como posso remover a chave gpg que adicionei usando o apt-key add -?

116

Eu não preciso mais da chave no chaveiro do meu servidor. É possível removê-lo? Eu adicionei a chave usando este comando:

 curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -

Obrigado por ajudar

    
por Raymond 24.02.2012 / 05:05

4 respostas

168

Primeiro, você precisa encontrar o ID da chave que você adicionou. Faça isso pelo comando:

sudo apt-key list

Ele listará todas as chaves que você tem, com cada entrada parecida com esta:

pub   1024R/B455BEF0 2010-07-29
uid                  Launchpad clicompanion-nightlies

Depois de descobrir qual chave remover, use o comando sudo apt-key del <keyid> , em que <keyid> é substituído pelo keyid atual da chave que você deseja remover do seu chaveiro.

$ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
    
por Nitin Venkatesh 24.02.2012 / 05:59
72

Em 16.10 a id da chave curta não é mais mostrada quando você usa o comando list, mas na verdade são os últimos 8 caracteres da hexa longa.

Assim, por exemplo, o ID da chave para a seguinte chave

/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) <[email protected]>

O ID da chave será EFE21092

    
por Wesam 08.11.2016 / 02:37
4

Eu fiz um pequeno script para facilitar as coisas e usar uma string em vez do id.

Você pode usar meu script se a chave contiver uma string exclusiva que você conhece. Por exemplo, no meu caso para o webmin

pub   1024D/11F63C51 2002-02-28
uid                  Jamie Cameron <[email protected]>
sub   1024g/1B24BE83 2002-02-28

Tenho certeza de que somente a chave webmin no meu sistema tem jcameron do que eu usei este script para remover a chave de acordo.

Eu salvei como ~/removeAptKey

e execute-o como

sudo ./removeAptKey jcameron

A saída deve ser algo como

KEYID: 11F63C51
OK

Aqui está meu script:

#!/bin/bash


if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

if [[ $# == 0 ]]
then
    echo "No key name provided"
    exit 1
fi

UNIQUE=$1

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."
    exit 2
fi

if [[ ${LENGTH} != 2 ]]
then
    echo "Key not found. Doing nothing."
    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

Primeiro, obtenho as duas linhas superiores do bloco da minha chave:

  • sudo apt-key list : lista as chaves apt como de costume
  • grep '${UNIQUE}' -B 1 : use apenas a linha que contém a string de chave exclusiva jcameron e -B 1 da linha anterior
  • > result.temp : Salve em um arquivo (que é removido mais tarde)

Se isso retornar exatamente 2 linhas (- > tem exatamente 1 tecla) eu prossigo:

  • grep 'pub' : agora pegue apenas a linha com o ID da chave pup
  • cut -d " " -f 4 : pegue a quarta palavra dessa linha (a primeira é pub do que vem dois espaços, do que a sequência que estamos depois de '')
  • cut -d "/" -f 2 : pegue somente a parte depois de /

E, finalmente, exclua essa chave e a limpeza

  • apt-key del ${KEYID} (no meu caso 11F63C51 )
  • rm result.temp : não precisa mais deste arquivo
por derHugo 06.12.2017 / 19:15
1

Eu sei que posso estar atrasado, mas só queria compartilhar este comando de uma linha para conseguir isso.

NOTA : Isso só funcionará se a saída for uma chave única.

Versões do Ubuntu até 16.04:

apt-key del $(apt-key list | awk 'NR==''expr $(apt-key list | grep --line-number --regexp "FOOBAR" | cut --fields 1 --delimiter ":") - 1''{print;exit}' | awk '{print $2}' | cut --fields 2 --delimiter "/")

em que FOOBAR é o nome do UID.

Versões do Ubuntu a partir de 16.10:

apt-key del $(apt-key list | awk 'NR==''expr $(apt-key list | grep --line-number --regexp "FOOBAR" | cut --fields 1 --delimiter ":") - 1''{print;exit}')

em que FOOBAR é o nome do UID.

    
por David Tabernero M. 07.06.2018 / 03:33