Làm cách nào để nhập khóa gpg bí mật (được sao chép từ máy này sang máy khác)?


153

Tôi đang cố gắng sao chép khóa gpg của mình từ máy này sang máy khác.

Tôi làm:

gpg --export ${ID} > public.key
gpg --export-secret-key ${ID} > private.key

Di chuyển tệp sang máy mới và sau đó:

gpg --import public.key
gpg: nyckel [ID]: public key [Name, e-mail] was imported
gpg: Total number of treated keys: 1
gpg:                 imported: 1  (RSA: 1)

gpg --allow-secret-key-import private.key
sec  [?]/[ID] [Creation date] [Name, e-mail]
ssb  [?]/[SUB-ID] [Creation date]

Tất cả có vẻ tốt với tôi, nhưng sau đó:

$ gpg -d [file].gpg
gpg: encrypted with 4096-bit RSA-key, id [SUB-ID], created [Creation date]
  [Name, e-mail]
gpg: decryption failed: secret key not accessible

Vì vậy, thông báo lỗi nói rằng tệp đã được mã hóa bằng [SUB-ID], mà nhập khóa bí mật dường như cho biết nó đã nhập. ([SUB-ID] trong cả hai tin nhắn đều giống nhau).

Vì vậy, rõ ràng tôi đang làm gì đó sai, nhưng tôi không biết gì.

Câu trả lời:


164

Bạn cần thêm --importvào dòng lệnh để nhập khóa riêng. Bạn không cần sử dụng --allow-secret-key-importcờ. Theo trang nam: "Đây là một tùy chọn lỗi thời và không được sử dụng ở bất cứ đâu."

gpg --import private.key

Bất kỳ cơ hội nào bạn cũng biết tại sao gpg2 -e -r [ID]nói "Không có gì đảm bảo khóa này thuộc về người dùng được đặt tên"? Tôi ước tôi đã bao gồm nó trong câu hỏi ban đầu, nhưng tôi nhận thấy nó chỉ sau đó.
user50849

1
GnuPG duy trì một cơ sở dữ liệu tin cậy mà nó sử dụng để quyết định mức độ tin cậy của khóa nào. Ví dụ: tin tưởng các khóa của riêng bạn nhiều nhất, các khóa không được ký trực tiếp hoặc gián tiếp bởi bất kỳ khóa đáng tin cậy nào. Sau khi bạn vừa nhập vào cơ sở dữ liệu trống, có lẽ không có khóa nào đáng tin cậy cả. Cơ sở dữ liệu tin cậy này tách biệt với cơ sở dữ liệu hoặc chính các khóa, vì vậy việc nhập khóa không làm cho chúng đáng tin cậy trừ khi chúng được ký bởi một số khóa đã được tin cậy. Bạn phải đánh dấu GnuPG những phím nào bạn muốn tin tưởng riêng.
Celada 16/2/2015

3
@Celeda, cảm ơn, với --edit-key và lệnh tin cậy mà tôi đã quản lý để có được khóa đáng tin cậy. Vì câu hỏi ban đầu của tôi là làm thế nào để sao chép khóa từ máy này sang máy khác, tôi nghĩ rằng sẽ rất phù hợp khi thêm điều gì đó vào câu trả lời của bạn. Tôi không muốn tự mình chỉnh sửa câu trả lời của bạn và dường như bạn biết nhiều hơn tôi về điều này.
user50849

Tôi không cảm thấy rằng tôi hiểu rõ Trustdb đủ để nói về nó trong câu trả lời của tôi. Tôi rất vui vì bạn đã có thể giải quyết nó bằng những gợi ý mơ hồ mà tôi đã đưa ra trong nhận xét của mình.
Celada 16/2/2015

Ok, tôi đã đặt lại tên cho câu hỏi ban đầu để nó phù hợp hơn với câu trả lời. Bằng cách đó tôi có thể đặt một câu hỏi riêng cho Trustdb. Cảm ơn đã giúp đỡ. :)
user50849

81

Trên đây chỉ là một câu trả lời một phần. Câu trả lời đầy đủ là:

gpg --import private.key
  • Cho KEYID (ví dụ FA0339620046E260) từ đầu ra:

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • HOẶC sử dụng lệnh tự động bên dưới:

    expect -c "spawn gpg --edit-key {KEY} trust quit; send \"5\ry\r\"; expect eof"
    

Cuối cùng, xác minh rằng khóa hiện được tin cậy [ultimate]thay vì[unknown]

gpg --list-keys

6
Đây phải là câu trả lời được chấp nhận. Hoàn thiện hơn nhiều.
Ben Lindsay

Những lệnh bổ sung này làm gì?
steinybot

@Steiny Nó làm cho khóa được tin cậy bằng [cuối cùng] thay vì [không xác định]. gpgtools.tenderapp.com/kb/faq/ từ
cmcginty

0

Tôi đã nhập từ bản sao lưu có phiên bản cũ của gpg. Vì máy tính cũ không có sẵn, chỉ có bản sao lưu, tôi không thể xuất nó trước. Đây là những gì làm việc cho tôi.

gpg --import old_home_dir/.gnupg/pubring.gpg
gpg --import old_home_dir/.gnupg/secring.gpg

Nếu bạn muốn có thể nhập khóa bí mật mà không cần nhập cụm mật khẩu ngay lập tức, hãy sử dụng --batchtùy chọn.

Để xác minh các khóa công khai:

gpg --list-keys

Để xác minh các khóa bí mật:

gpg --list-secret-keys
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.