apt-get 업데이트에서 "공개 키를 사용할 수 없음"


133

수행 apt-get update하면 다음 오류가 발생합니다.

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

2
... 그리고 당신이 생략 한 문자열은 중요한 비트입니다. ruda가 제안하지 않은 키링 패키지 (예 : 신뢰할 수있는 미디어에서 설치 한 경우)가 누락 된 키를 식별 할 수 있습니다.
derobert

1
고양이가 키보드를 밟지 않도록하세요. :-) ⁠
G-Man

답변:


173

다른 답변은 키 '8B48AD6246925553'이 패키지에 표시되어 있는지 여부에 따라 작동합니다.

키가 필요한 경우 해당 키를 가져 와서 찾을 수있는 위치는 키 서버에 있습니다 (아마도 모든 키 서버가 수행함).

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553

이것은 나에게도 효과가 있었고 다른 대답은 아닙니다 ..
Sai Kiran

@starbeamrainbowlabs 지금입니다! =)
브라질 사람

@ThatBrazilianGuy : D
starbeamrainbowlabs

4
임의의 키에 전역 apt-trust를 추가하는 것과 같은 위험한 작업을 수행 할 수 있도록 수신 된 키가 합법적인지 확인할 수있는 방법이 있습니까? 키를받은 후의 신뢰성을 확인할 수있는 방법이 있습니까? 키 확인을 수행하기 위해 수행 할 단계는 무엇입니까? 예를 들어, 당신이 가진 유일한 것은 ftp-master.debian.org/keys/ziyi_key_2002.asc 이므로 신뢰 체인을 끊지 않고 최신 키를 얻는 방법은 무엇입니까?
티노

1
@ThatBrazilianGuy : 귀하의 질문이 사실이라고해서 답변을 파괴 할 권리는 없습니다.
G-남자

76

아래 단계 대신 @mariotomo의 답변을 따르는 것이 좋습니다.


에 따르면 다음 키 ID가 사용할 수있는 공개 키가 없습니다 ,이 문제를 해결할 것입니다 :

sudo aptitude install debian-archive-keyring

참고 문헌


마지막 8 개의 16 진수는 이것과 공유되므로 아마도 어지러움에 대해 불평하고있을 것입니다. 안타깝게도 OP는 다음과 같이 생략했습니다. pub 4096R / 46925553 2012-04-27 [expires : 2020-04-25] uid 데비안 아카이브 자동 서명 키 (7.0 / wheezy) <ftpmaster@debian.org>
Martin Dorey

5
되어 debian-keyring정말 필요? 그것은 단지 나를 위해 일했습니다 debian-archive-keyring.
x-yuri

당연히 16 진수가 다르면 다른 솔루션이 필요할 수 있습니다. Google 검색에서 숫자를 따옴표로 묶어 해당 숫자를 완전하게 검색하고이 페이지에 착륙하여 문제가 해결되었습니다. reddit.com/r/linux4noobs/comments/4grdo7/… (@ mariotomo 's answer – 나도 시도하지 않았을 수도있다)
Michael Scheper

debian-keyring되어 있지 필요합니다.
x-yuri

38

나는 추천한다 :

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

이 방법은 설치하지 않기 때문에 다른 방법보다 낫습니다 debian-keyring. 이는 시간의 99 %가 불필요합니다.


1
이것은 내가 필요한 전부였습니다-나를 위해 훌륭하게 일했습니다!
harperville

매력처럼 작동하십시오!
Wilbeibi

1
Docker 컨테이너에 더 잘 맞기 때문에 이것이 더 나은 솔루션이었습니다. 그러나 당신이 다음 두 번째를 수행 첫번째 만이 패키지를 설치해야합니다 (적어도 고정 표시기)주의 apt-get update, 다음, 당신이 정말로 원하는 패키지를 설치합니다.
Malvineous

데비안 10 : 경고 : 'apt-key update'는 더 이상 사용되지 않으며 더 이상 사용해서는 안됩니다! 참고 : 배포판에서이 명령은 어떤 조합없고, 따라서 안전하게 제거 할 수 있습니다
aexl

사실, 최신 버전에 debian-keyring을 설치 한 경우에도 debian-archive-keyring을 설치해야 할 수 있습니다.
Ángel

17

다음 키 ID에 사용 가능한 공개 키가 없다는 오류 는 심각한 보안 문제를 나타냅니다 . 공개 키가 없기 때문에 운영 체제 패키지가 공개 키와의 무결성을 검사 할 수 없습니다.

메시지가 다음과 같은 경우 :

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

이 명령을 사용하여 키를 사용하는 저장소를 찾을 수 있습니다.

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

이 예에서 Chrome의 Google 저장소는 다음과 같습니다.

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

Google, 정부 등을 신뢰하는 경우 키의 위치를 ​​찾아서 다음을 추가해야합니다.

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -

나를 위해 고정 :) 감사합니다! 그러나 궁금한 점은 무엇입니까? 첫 번째 명령은 무엇을하고 두 번째 명령은 무엇을합니까? 이것이 모든 문제를 해결해야합니까? 내 문제는 Chrome에서도 발생했습니다.
Rohan

그리고 첫 번째 명령은 gpg로 무엇을 변경합니까? 그것은 conf 파일 gpg.conf를 만들었고 내가 원하는지 모르겠습니다.
Rohan

첫 번째는 패킷 목록에서 키를 검색하여 문제가되는 패킷을 확인합니다. 두 번째는 키를 다운로드하여 시스템에 추가합니다. 이 경우 첫 번째 명령은 유용하지 않지만 일반적인 접근 방식으로는 좋습니다.
Marco Sulla

3

Linux Mint (Kernel 버전 3.13.0-24)에서 동일한 문제에 직면했으며 명령을 사용하여 해결할 수있었습니다.

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

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

주목할 사항 :

1) 명령이 순서대로 실행되었습니다. 2) 명령이 루트 사용자 로 실행되었습니다.

의례 대답.


1

대안으로 :

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

6
답변에 블로그를 광고하지 마십시오. 그것이 당신의 바이오를위한 것입니다.
slm

1

내 대답은 다음 bash 스크립틀릿에서 @mariotomo (내가 upvoted)의 약간의 업그레이드 (IMHO, YMMV)입니다.

  • 또한 사용 gpg
  • 더 매개 변수화
  • (또한 다른 키 서버를 사용하지만이 경우 차이가 거의 없다고 생각합니다)

eval"드라 이런"라인을 주석 처리 할 수도 있습니다 . 그러면 스크립틀릿은 실제로 수행하지 않고 수행하려는 작업 만 표시합니다. NO_PUBKEY이것을 사용할 때마다 값을 변경하십시오 ( KEYSERVER원하는대로 변경할 수도 있음 ).

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

0

killall -q gpg-agent다른 솔루션이 작동하지 않으면 실행하십시오 . 작동 할 수 있습니다.

Ubuntu 18.04의 PPA 저장소에 대해 비슷한 오류가 발생하고 지난 달 인터넷에서 다양한 솔루션을 시도한 후 gpg 에이전트를 우연히 발견하여 죽였습니다. 그런 다음 PPA 리포지토리가 업데이트를 시작했습니다 sudo apt-get update. 보안이 손상 될 수 있지만 PPA의 패키지가 필요한 경우도 있지만 GPG에서 알려 드리지 않습니다. 나중에 gpg-agent를 다시 시작하면 정상적인 상태로 돌아갑니다.


-1

이것은 나를 위해 일했다 :

빠른 치료법 :

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

( 소스 )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.