Làm thế nào để sửa khóa GPG bị thiếu?


154

Tôi vừa cài đặt Ubuntu 12.04 và tôi đã thêm một số repo và khi tôi làm vậy apt-get update, tôi bị thiếu khóa gpg.

Theo lệnh dường như không làm việc cho tôi:

apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver subkeys.pgp.net --recv $key && sudo gpg --export --armor $key | apt-key add -; done

Làm thế nào để khắc phục vấn đề này?


1
Sẽ là tốt nếu câu trả lời cho câu hỏi này bao gồm tại sao lỗi này xảy ra ở nơi đầu tiên, và phải làm gì để tránh nó trong tương lai.
Flimm

Tôi đã giải quyết vấn đề của mình bằng cách sử dụng Y-ppa-manager. Cảm ơn Ashu về giải pháp!

1
Giải pháp chi tiết với ảnh chụp màn hình opensourceforgeek.blogspot.in/2013/04/ từ
Aniket Thakur

Câu trả lời:


222

Tôi thích giải pháp này, tải lại các khóa bị thiếu từ máy chủ khóa Ubuntu.

Dành cho Ubuntu

Trong trường hợp của tôi

 Reading package lists... Done  
 W: GPG error: http://ppa.launchpad.net precise 
 Release: The following signatures couldn't be verified because the public key is not available: 
 NO_PUBKEY 2EA8F35793D8809A

Đây là lệnh để thêm khóa bị thiếu được đề cập trong thông báo lỗi.

sudo apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 2EA8F35793D8809A

Vì vậy, tôi lấy khóa bị thiếu 2EA8F35793D8809Avà yêu cầu keyerver.ubfox.com thêm nó vào danh sách các khóa tôi có trong apt.

Đối với linux mint Máy chủ khóa
của bạn hơi kháckeyserver.linuxmint.com

sudo apt-key adv --recv-key --keyserver keyserver.linuxmint.com "missing key"

Các máy chủ quan trọng khác để thử
keyserver.ubuntu.com


1
Askubfox.com/a/136735/10998 không hoạt động với tôi.
nelaaro

5
Có bất kỳ ý nghĩa bảo mật để làm điều này? Về cơ bản, tôi chỉ đang tải xuống một khóa công khai qua http, phải không?
Ajedi32

1
@iamcreasy, để chứng minh cho các cài đặt Ubuntu rằng các gói bạn đang cài đặt là an toàn và phần mềm độc hại miễn phí, mỗi gói được ký bởi máy chủ khóa ub Ubuntu. Vì vậy, trình cài đặt của bạn sẽ kiểm tra xem gói bạn đang cài đặt có phải từ nguồn đáng tin cậy và được xác minh hay không. Tôi đã không tìm thấy bất kỳ tài liệu thực sự tốt về nó, nhưng điều này có thể giúp [gpg doc] ( help.ubuntu.com/community/... )
nelaaro

1
Tôi đã tạo một chức năng để thêm các khóa cần thiết adkeys (){ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$1";}Và để loại bỏ các khóa trùng lặp hoặc có vấn đề tôi đang sử dụng để thực hiện việc này:grep -ril "pattern" /etc/apt | sudo xargs rm -f
SergioAraujo

1
Tôi đề nghị --keyserver ha.pool.sks-keyservers.net. Đó là nhóm máy chủ chính có tính sẵn sàng cao, giúp tăng đáng kể cơ hội nhận được khóa bạn muốn.
Robin thích con chim

21

Có một phần mềm được gọi là Y PPA managerNó có thể giúp sửa các lỗi khóa GPG.
Quản lý PPA

Để cài đặt -

sudo add-apt-repository ppa:webupd8team/y-ppa-manager  
sudo apt-get update  
sudo apt-get install y-ppa-manager    

Khi bạn cài đặt, hãy khởi động nó, sau đó đi đến advancevà chọn "nhập tất cả các khóa GPG bị thiếu"


2
Bạn phải thêm sudo vào lệnh này! sudo apt-get...
Fih

Điều này cũng hiệu quả với tôi và tôi rất ấn tượng với giao diện dễ sử dụng sạch sẽ của Y PPA Manager, đây là một phát hiện hay, Cảm ơn Ashu.
CoalaWeb

Tôi đã làm những gì bạn nói nhưng không có gì xảy ra. Ý tôi là tôi không thể tìm thấy ứng dụng ở bất cứ đâu trong menu.
Cristiana Nicolae

@CristianaNicolae Sau khi cài đặt, bạn có thể tìm thấy Y PPA Manager trong Ứng dụng> Công cụ hệ thống.
Ashu

Xin lỗi Ashu, tôi đã kiểm tra và kiểm tra lại. Tôi vẫn không thể nhìn thấy nó ở đó. Có vẻ như nó được cài đặt ở đâu đó trong hệ thống, nhưng vì một số lý do, nó không hiển thị ở bất cứ đâu trong menu.
Cristiana Nicolae

14

Tải xuống tự động bằng cách sử dụng apt-key adv --recv-keyscó thể không hoạt động đằng sau tường lửa.

Trong trường hợp này, hãy mở trang web của Ubuntu Key Server trong trình duyệt web của bạn và tìm kiếm chuỗi 0x<hexadecimal code of your missing key>.

Mở liên kết trong phần quán rượu . Lưu nội dung chính (từ -----BEGIN PGP PUBLIC KEY BLOCK-----đến -----END PGP PUBLIC KEY BLOCK-----) dưới dạng tệp.

Sau đó chạy:

sudo apt-key add <file-with-saved-key>

Nguồn: http://opensourceforgeek.blogspot.in/2013/04/w-gpg-error-httpppalaunchpadnet-precise.html


12

đầu tiên nhập lệnh sau trong terminal

 sudo rm /var/lib/apt/lists/* -vf

sau đó cập nhật hệ thống của bạn bằng cách nhập lệnh sau vào terminal

 sudo apt-get update && sudo apt-get upgrade

sau đó sẽ không có lỗi và mọi thứ sẽ hoạt động tốt.


thx để trả lời. Cách giải quyết vấn đề của tôi đơn giản hơn nhiều: gõ sudo sutrước khi gõ lệnh của tôi ở trên
Fih

Mặc dù điều đó sẽ giúp bạn, nhưng sudo sukhông có cách nào là cách tiếp cận chính xác - trong trường hợp này sudo -ssẽ làm những gì bạn cần.
guntbert

Tôi nghĩ bạn có nghĩa là sudo rm /var/lib/apt/lists/* -rf(tùy chọn "r" thay vì "v")
Oliboy50

9
Sử dụng cả hai sudormnguy hiểm. Sử dụng cả hai rm*nguy hiểm. Sử dụng ba trong cùng một lệnh và một con cá mập sẽ cắn bạn, hoặc các tập tin của bạn.
JB.

Điều này không làm việc cho tôi.
WiSaGaN

9

Đối với Ubuntu 12.04 Chính xác: Giải pháp vĩnh viễn

để thông báo lỗi này xảy ra sau khi thêm một kho lưu trữ mới và cập nhật danh sách kho lưu trữ. Điều này là do một máy chủ mà địa chỉ không còn hợp lệ. Vì vậy, chỉ cần thay đổi địa chỉ thành một địa chỉ tốt.

  1. Mở tệp ~/.gnupg/gpg.confbằng trình soạn thảo văn bản.

    Trong thiết bị đầu cuối: gedit ~/.gnupg/gpg.conf

  2. sau đó, trong tệp này, tìm dòng in đậm sau (dòng thứ 116) (nên được mặc định như sau):

    [...]
    Keyserver hkp: //keys.gnupg.net
    # Keyserver mailto: pgp-public-keys@keys.nl.pgp.net
    # Keyserver ldap: //keyserver.pgp.com

  3. sau đó thêm dòng in đậm sau, để cuối cùng cho kết quả như sau:

    (thêm # vào dòng thứ hai như sau để nhận xét địa chỉ cũ)

    [...] Keyserver hkp: //keys.gnupg.net # Keyserver mailto: pgp-public-keys@keys.nl.pgp.net # Keyserver ldap: //keyserver.pgp.com
    keyserver http://keyserver.ubuntu.com
    #

  4. Lưu tệp và cố gắng cập nhật lại:

    Trong thiết bị đầu cuối: sudo apt-get update


7

Dựa trên câu trả lời của Nelaar:

sudo apt-get update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' |
while read key; do
    echo 'Processing key:' "$key"
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$key"
done

Kịch bản đưa tất cả các lỗi vào một tệp tạm thời và sau đó lặp qua chúng, nhập các khóa bị thiếu.


6

Cách dễ nhất là với Y PPA MAnager

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager 

Mở Trình quản lý PPA từ Dash

nhập mô tả hình ảnh ở đây

Nhập mật khẩu quản trị viên của bạn

nhập mô tả hình ảnh ở đây

Nhấp đúp chuột vào tùy chọn nâng cao

nhập mô tả hình ảnh ở đây

Nhấp vào Thử nhập tất cả các khóa GPG bị thiếu

nhập mô tả hình ảnh ở đây

Nhấn Ok để sửa nó


4

Đầu tiên nhập lệnh sau trong terminal

sudo rm /var/lib/apt/lists/* -vf

sau đó cập nhật hệ thống của bạn bằng cách nhập lệnh sau vào terminal

sudo apt-get update && sudo apt-get upgrade

sau đó sẽ không có lỗi và mọi thứ sẽ hoạt động tốt.


2

Điều làm việc cho tôi là xóa khóa trước và sau đó cài đặt lại. Để đạt được điều đó tôi đã làm như sau:

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5

xóa bằng

root@ > ~: sudo apt-key del 630239CC130E1A7FD81A27B140976EAF437D05B5

Sau đó, cài đặt lại bằng cách gõ

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5

1

Tôi đã gặp vấn đề tương tự, bằng cách thêm ppa ( ppa:nathandyer/vocal-stable), nó đã phá vỡ kho của tôi. Tôi đã được hướng dẫn từ Tác giả của Web Upd8, về cách tôi có thể cố gắng khắc phục điều này, đây là các bước làm việc của tôi.

Sao lưu .gpgchìa khóa của bạn , chỉ trong trường hợp có sự cố.

Hãy tạo một thư mục trong đó chúng tôi sẽ lưu trữ bản sao lưu của chúng tôi.

  • mkdir ~/gpg-backups

    Điều này sao lưu tất cả các tập tin trong /etc/apt/trusted.gpg.d/thư mục.

  • sudo cp /etc/apt/trusted.gpg.d/*.* ~/gpg-backups/

Bây giờ, chúng tôi sẽ loại bỏ tất cả các .gpgphím.

  • sudo rm /etc/apt/trusted.gpg.d/

  • sudo cp /etc/apt/trustdb.gpg ~/gpg-backups/

  • sudo rm /etc/apt/trustdb.gpg

trong Phần mềm & Cập nhật, trên tab "Xác thực", đã nhấp vào "Khôi phục mặc định

Cài đặt trình quản lý y-ppa để nhập tất cả các khóa GPG bị thiếu

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

Tham khảo :


1
Một dòng dường như có lỗi, phải sudo rm /etc/apt/trusted.gpg.d/*. Không thể bỏ qua *EOL, vì bạn không thể xóa các thư mục không trống rmkhi -rtùy chọn không được chỉ định .-- Ah, và bạn có thể giết 2 con chim bằng 1 viên đá sudo mv /etc/apt/trustdb.gpg ~/gpg-backups/. Bởi vì nếu bạn di chuyển tệp, bạn không cần rmtệp nguồn sau đó.
cú pháp

1

Tôi muốn tự động sửa các lỗi như thế này trong tập lệnh bash. Đối với bất cứ ai quan tâm, điều này nên làm thủ thuật:

sudo apt-get update 2> /tmp/keymissing
if [ -f /tmp/keymissing ]
then
    for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //")
        do 
        echo -e "\nProcessing key: $key"
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        sudo apt-get update
    done
    rm /tmp/keymissing
fi

0

Nếu bạn có một cái gì đó như thế này:

# aptitude update
...
Ign http://archive.canonical.com wily/partner Translation-en_US
Fetched 422 kB in 3s (130 kB/s)
W: GPG error: http://ubuntu.volia.net wily InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

Trước hết hãy thử:

# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

Đầu ra của lệnh cuối cùng có thể là:

gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_experiments.gpg': resource limit
gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_gthumb.gpg': resource limit

Vì vậy, bạn cần phải đi đến /etc/apt/trusted.gpg.d/và loại bỏ các khóa không sử dụng và sau đó lặp lại apt-key advaptitude update


0

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


-1

Vấn đề này xảy ra với tôi khi tôi cài đặt 12.04 bằng cài đặt tiếng Đức. Danh sách kho lưu trữ sau đó sử dụng kho lưu trữ nhân bản của Đức theo mặc định. Nếu đó là trường hợp bạn có thể chỉnh sửa danh sách kho lưu trữ và thay đổi tất cả các kho lưu trữ nhân bản của Đức thành kho lưu trữ tiêu chuẩn Ubuntu.

Bạn có thể sử dụng phương pháp sau:

sudo nano /etc/apt/sources.list

Tìm kiếm và thay thế trong Nano bằng cách sử dụng Alt-r

Tìm kiếm (để thay thế): /de.

Thay bằng: /

Thay thế tất cả (Bấm A)

Lưu tập tin Ctrl-x

Sau đó cập nhật hệ thống của bạn bằng cách nhập lệnh sau trong thiết bị đầu cuối:

sudo apt-get update && sudo apt-get upgrade

Sau này không có lỗi và mọi thứ sẽ hoạt động tốt.


2
Điều này không thực sự trả lời câu hỏi của OP, đặc biệt là khi họ không sử dụng các nguồn.
Kevin Bowen
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.