Không có khóa công khai có sẵn trên bản cập nhật apt-get


133

Khi thực hiện apt-get update, tôi gặp lỗi sau:

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
... Và chuỗi đó bạn đã bỏ qua là một bit quan trọng. Chúng tôi sẽ cho chúng tôi xác định những khóa nào bạn thiếu (giả sử cài đặt các gói khóa tốt nhất là từ phương tiện truyền thông đáng tin cậy mà ruda đề nghị không giúp đỡ)
derobert

1
Bạn không nên để con mèo của bạn đi trên bàn phím như thế. :-)
G-Man

Câu trả lời:


173

Các câu trả lời khác sẽ hoạt động, hoặc không, tùy thuộc vào việc khóa '8B48AD6246925553' có trong các gói mà họ chỉ ra hay không.

Nếu bạn cần một khóa, bạn phải lấy khóa đó và tìm nó ở đâu, đó là trong một máy chủ khóa (rất có thể bất kỳ máy chủ khóa nào cũng sẽ làm được):

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

Điều này cũng có hiệu quả với tôi và không phải câu trả lời nào khác ở đây ..
Sai Kiran

@starbeamrainbowlabs ngay bây giờ! =)
chàng người Brazil đó

@ThatBrazilianGuy: D
starbeamrainbowlabs

4
Có cách nào để xác định xem khóa nhận được có phải là leggit để tôi có thể thực hiện một thao tác nguy hiểm như thêm niềm tin apt toàn cầu vào một số khóa tùy ý không? Có cách nào để kiểm tra độ tin cậy của khóa sau khi nhận được không? Đó là các bước để thực hiện để xác minh chính? Ví dụ: thứ duy nhất bạn có là ftp-master.debian.org/keys/ziyi_key_2002.asc vậy làm thế nào để bạn có được khóa mới nhất mà không phá vỡ chuỗi tin cậy?
Tino

1
@ThatBrazilianGuy: Thực tế là câu hỏi của bạn không cho bạn quyền phá hoại câu trả lời.
G-Man

76

Tôi khuyên bạn nên làm theo câu trả lời của @ mariotomo hơn là các bước dưới đây:


Theo Không có khóa công khai có sẵn cho ID khóa sau , điều này sẽ khắc phục nó:

sudo aptitude install debian-archive-keyring

Người giới thiệu


8 chữ số hex cuối cùng được chia sẻ với điều này, vì vậy có lẽ nó đang phàn nàn về sự khò khè. Thật không may cho OP đã bỏ qua rằng: pub 4096R / 46925553 2012-04-27 [hết hạn: 2020-04-25] uid Khóa ký tự động Debian Archive (7.0 / wheezy) <ftpmaster@debian.org>
Martin Dorey

5
debian-keyringthực sự cần thiết? Nó làm việc cho tôi chỉ với debian-archive-keyring.
x-yuri

Không ngạc nhiên, các số hex khác nhau có thể yêu cầu các giải pháp khác nhau. Tôi đặt dấu ngoặc kép quanh số trong tìm kiếm Google của mình, để buộc tìm kiếm nguyên văn cho số đó và tôi đã truy cập trang này, điều này đã khắc phục vấn đề của tôi: reddit.com/r/linux4noobs/comments/4grdo7/ tựa (câu trả lời của @ mariotomo có thể đã làm việc quá, tôi đã không thử)
Michael Scheper

debian-keyringkhông cần thiết.
x-yuri

38

Tôi đề nghị:

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

Điều này tốt hơn so với các phương pháp khác vì nó không cài đặt debian-keyring, vốn lớn và 99% thời gian không cần thiết.


1
Đây là tất cả những gì tôi cần - làm việc rất tốt cho tôi!
harperville

Làm việc như một cơ duyên!
Wilbeibi

1
Đây là giải pháp tốt hơn cho tôi vì nó phù hợp với container Docker tốt hơn. Tuy nhiên lưu ý rằng (ít nhất là trong Docker) trước tiên bạn phải cài đặt gói này, sau đó thực hiện một giây apt-get update, sau đó cài đặt các gói bạn thực sự muốn.
Malvineous

Debian 10: Cảnh báo: 'cập nhật khóa apt' không được dùng nữa và không nên sử dụng nữa! Lưu ý: Trong bản phân phối của bạn, lệnh này là không có và do đó có thể được gỡ bỏ an toàn
aexl

Trên thực tế, bạn có thể cần phải cài đặt khóa debian-archive-key ngay cả khi bạn đã cài đặt khóa debian trên phiên bản mới nhất của nó
Ángel

17

Lỗi Không có khóa công khai khả dụng cho các ID khóa sau cho thấy vấn đề bảo mật nghiêm trọng : gói hệ điều hành không thể được kiểm tra tính toàn vẹn với khóa chung của nó, vì khóa chung của nó bị thiếu.

Nếu tin nhắn là:

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

Bạn có thể sử dụng lệnh này để tìm ra kho lưu trữ nào sử dụng khóa:

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

Trong ví dụ này là kho lưu trữ của Google cho Chrome:

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

Nếu bạn tin tưởng Google, chính phủ của nó, v.v., bạn nên tìm hiểu khóa đó ở đâu và thêm nó vào:

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

Đã sửa cho tôi :) Cảm ơn bạn! Nhưng chỉ tò mò, có gì sai? Lệnh thứ nhất làm gì, và lệnh thứ hai làm gì? Điều này có nên giải quyết tất cả các vấn đề? Vấn đề của tôi cũng là với Google Chrome.
Rohan

Và lệnh đầu tiên có thay đổi gì với gpg không? Nó nói rằng nó đã tạo ra một số tập tin conf gpg.conf và tôi không biết nếu tôi muốn điều đó.
Rohan

Đầu tiên không tìm kiếm khóa trong danh sách các gói của bạn để xem gói vi phạm. Cái thứ hai tải khóa và thêm nó vào hệ thống của bạn. Lệnh đầu tiên không hữu ích trong trường hợp này, nhưng nó là một cách tiếp cận chung.
Marco Sulla

3

Tôi đã gặp vấn đề tương tự trong Linux Mint (Phiên bản hạt nhân 3.13.0-24) và tôi đã có thể giải quyết nó bằng các lệnh:

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

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

Những điểm cần lưu ý:

1) Các lệnh được thực hiện theo thứ tự 2) Các lệnh được thực hiện dưới dạng người dùng root

Lịch sự câu trả lời này .


1

Như một sự thay thế:

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

6
Vui lòng không quảng cáo blog của bạn trong câu trả lời của bạn. Đó là những gì sinh học của bạn là dành cho.
slm

1

Câu trả lời của tôi là một bản nâng cấp nhẹ (IMHO, YMMV) trên @mariotomo (người tôi đã nâng cấp) trong tập lệnh bash sau

  • cũng sử dụng gpg
  • tham số hóa nhiều hơn
  • (cũng sử dụng một máy chủ khóa khác, mặc dù trong trường hợp này tôi nghi ngờ nó có chút khác biệt)

Bạn cũng có thể nhận xét evaldòng "chạy khô": scriptlet sau đó sẽ chỉ cho bạn thấy những gì nó dự định làm, mà không thực sự làm điều đó. Chỉ cần chắc chắn thay đổi giá trị của NO_PUBKEYmỗi lần bạn sử dụng (bạn cũng có thể thay đổi KEYSERVERtheo ý muốn):

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

Chạy killall -q gpg-agentnếu các giải pháp khác không hoạt động. Nó có thể làm việc.

Tôi đã gặp một lỗi tương tự cho kho lưu trữ PPA trên Ubuntu 18.04 và sau khi thử nhiều giải pháp khác nhau trên internet trong tháng trước, tôi chỉ tình cờ tìm thấy tác nhân gpg và giết chết nó. Sau đó các kho PPA bắt đầu cập nhật về việc làm sudo apt-get update. Tôi biết nó có thể ảnh hưởng đến bảo mật, nhưng đôi khi bạn cần một gói từ PPA và GPG không cho phép bạn. Sau đó, bạn bắt đầu lại tác nhân gpg và mọi thứ trở lại bình thường.


-1

Điều này làm việc cho tôi:

Khắc phục nhanh:

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

( Nguồn )

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.