apt-key add-를 사용하여 추가 한 gpg 키를 어떻게 제거 할 수 있습니까?


147

더 이상 서버 키링에 키가 필요하지 않습니다. 그것을 제거 할 수 있습니까? 이 명령을 사용하여 키를 추가했습니다.

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

도움을 주셔서 감사합니다


이 질문은 현재 Ubuntu 18.04 GUI Software & Updates-->Authentication가 작동하지 않는 것 같습니다 (신뢰할 수있는 소프트웨어 키를 제거 할 수 없음) 때문에 유용합니다 . 대신, 아래에 주어진 cli cmds를 사용해야했습니다.
썬 베어

답변:


198

먼저 추가 한 키의 키 ID를 찾아야합니다. 다음 명령으로이를 수행하십시오.

sudo apt-key list

각 항목이 다음과 같이있는 모든 키가 나열됩니다.

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

제거 할 키를 알아 낸 후에는 sudo apt-key del <keyid>where 명령을 <keyid>키링에서 제거하려는 키의 실제 키 ID로 바꿉니다.

$ sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$

@Raymond 문제 없음 :)
Nitin Venkatesh

1
아, 고유 ID가 uid로 표시된 줄이 아닌 pub으로 표시된 줄에 있습니다.
ctrl-alt-delor

6
우분투 16.10 결과는 조금 다른 것 같다 :pub rsa4096 2012-05-11 [SC] 8439 .... uid ....
mxdsp

이 업데이트는 18.04
kennyB

키를 삭제 한 후 새로운 문제가 발생했습니다. The following signatures couldn't be verified because the public key is not available: NO_PUBKEY다음에 어떻게해야합니까?
Corey

127

16.10에서는 list 명령을 사용할 때 짧은 키 ID가 더 이상 표시되지 않지만 실제로는 긴 16 진수의 마지막 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입니다.


17
매우 도움이됩니다. 감사합니다. 이것은 매우 도움이되지 않는 UX입니다.
SColvin

11
@SColvin 당신이 할 수 sudo apt-key del "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092"있고 전체 지문을 사용하는 것이 더 안전하다고 생각합니다. 키 ID에 중복이있을 수 있습니다 (적어도 이메일에 PGP를 사용할 때 키 ID뿐만 아니라 전체 지문을 공유해야한다고 읽었습니다).
baptx

1
17.10에도 매우 도움이되었습니다!
Hartmut P.

2
그리고 18.04.1.
러스 베이트맨

감사합니다. 끔찍한 디자인 결정.
브라이언 스미스

4

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=$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."
    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: 파일로 저장 (나중에 제거)

이것이 정확히 2 줄을 반환하면 (-> 정확히 1 키를 얻음) 계속 움직입니다.

  • grep 'pub': 이제 pup키 ID가 있는 줄만 가져 가십시오.
  • cut -d " " -f 4: 그 줄의 네 번째 단어를 취하십시오 (첫 번째는 pub``다음에 오는 문자열보다 두 칸 띄어옵니다)
  • cut -d "/" -f 2: 다음 부분 만 취하십시오 /

마지막 으로이 키를 삭제하고 정리하십시오.

  • apt-key del ${KEYID}(내 경우에는 11F63C51)
  • rm result.temp: 더 이상이 파일이 필요하지 않습니다

나는 이것을 매개 변수없이 실행했으며 모든 키를 지 웠습니다. ; (
Gabriel Fair

다른 사람이 자신의 키를 has 경우 다음 지침에 따라 키를 고칠 수있었습니다. askubuntu.com/a/145933/13693
Gabriel Fair

허? 어떻게 이런일이 일어 났습니까? 매개 변수가 없으면 "키 이름이 제공되지 않았습니다"로 종료해야합니다.
derHugo

@derHugo는 확실하지 않지만 #if 절이 범인이라고 할 수 있습니까?
탈주

당신이 의미한다면 @defuzed $#. 주어진 매개 변수의 양을 반환합니다.
derHugo

2

나는 늦을지도 모른다는 것을 알고 있지만 이것을 달성하기 위해이 한 줄 명령을 공유하고 싶었습니다.

참고 : 이것은 출력이 고유 키인 경우에만 작동합니다.


최대 16.04의 Ubuntu 버전 (업데이트 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 $2}' | cut --fields 2 --delimiter "/")

FOOBARUID 이름은 어디에 있습니까 ?


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}')

FOOBARUID 이름은 어디에 있습니까 ?


1
이유를 모르겠지만 16.04제공 한 명령 을 실행하려고 할 때 오류가 발생 했습니다. awk: line 1: syntax error at or near {그러나 각도 괄호가 일치하므로 이것이 왜 작동하지 않는지 모르겠습니다.
Gabriel Fair

@GabrielFair 주목 해 주셔서 감사합니다. 6 월에 다시 작동했습니다 apt-key list. 이제 다시 작동하는 것 같습니다. (편집 : 수퍼 유저 권한으로 실행해야 함)
David Tabernero M.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.