더 이상 서버 키링에 키가 필요하지 않습니다. 그것을 제거 할 수 있습니까? 이 명령을 사용하여 키를 추가했습니다.
curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
도움을 주셔서 감사합니다
답변
먼저 추가 한 키의 키 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
$
답변
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입니다.
답변
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
: 더 이상이 파일이 필요하지 않습니다
답변
나는 늦을지도 모른다는 것을 알고 있지만 이것을 달성하기 위해이 한 줄 명령을 공유하고 싶었습니다.
참고 : 이것은 출력이 고유 키인 경우에만 작동합니다.
최대 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 "/")
FOOBAR
UID 이름은 어디에 있습니까 ?
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}')
FOOBAR
UID 이름은 어디에 있습니까 ?