Як імпортувати секретний ключ gpg (скопійований з однієї машини на інший)?


153

Я намагаюся скопіювати свій gpg-ключ з однієї машини на іншу.

Я згоден:

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

Перемістіть файли на нову машину, а потім:

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]

Все мені добре виглядає, але тоді:

$ 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

Отже, повідомлення про помилку говорить про те, що файл зашифрований за допомогою [SUB-ID], який, як видається, імпортує секретний ключ, каже, що він імпортував. ([SUB-ID] в обох повідомленнях однаковий).

Тож я явно роблю щось не так, але не знаю, що.

Відповіді:


164

Вам потрібно додати --importдо командного рядка, щоб імпортувати приватний ключ. Вам не потрібно використовувати --allow-secret-key-importпрапор. Як повідомляє сторінка man: "Це застарілий варіант і ніде не використовується".

gpg --import private.key

Будь-який шанс ви також знаєте, чому gpg2 -e -r [ID]говорить "Немає впевненості, що цей ключ належить названому користувачеві"? Я б хотів, щоб я включив його в оригінальне запитання, але помітив це лише пізніше.
user50849

1
GnuPG підтримує довірну базу даних, яку він використовує для визначення кількості довіри до яких ключів. Наприклад, найбільше довіряйте власним ключам - ключі, які не підписані прямо чи опосередковано жодними надійними ключами. Після того, як ви щойно імпортували в порожню базу даних, напевно, жодним ключам не довіряють. Ця база даних довіри є окремою від бази даних або самих ключів, тому імпорт ключів не робить їх довіреними, якщо вони не підписані якимсь уже довіреним ключем. Ви повинні скрасти GnuPG, яким клавішам ви хочете довіряти окремо.
Целада

3
@Celeda, дякую, з --edit-key і командою довіри, мені вдалося отримати ключ довіреним. Оскільки моє первісне запитання полягало в тому, як скопіювати ключ з однієї машини на іншу, я думаю, було б доречно додати щось про це до своєї відповіді. Я вважаю за краще не редагувати свою відповідь самостійно, і ви, здається, знаєте про це набагато більше, ніж я.
user50849

Я не відчуваю, що я досить добре розумію trustdb, щоб говорити про це у своїй відповіді. Я радий, що ти зміг це розробити, використовуючи неясні підказки, які я дав у своєму коментарі.
Селада

Гаразд, я переназвав оригінальне запитання, щоб воно конкретніше відповідало відповіді. Таким чином я можу задати окреме запитання trustdb. Дякую за допомогу. :)
user50849

81

Вище - лише часткова відповідь. Повна відповідь:

gpg --import private.key
  • Враховуючи KEYID (наприклад FA0339620046E260) з виводу:

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • АБО використовуйте автоматизовану команду нижче:

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

Нарешті, переконайтесь, що ключ тепер довіряється [ultimate]замість[unknown]

gpg --list-keys

6
Це має бути прийнятою відповіддю. Набагато повніше.
Бен Ліндсей

Що роблять ці додаткові команди?
Steiny

@Steiny Це робить ключ, якому довіряють [ultimate], а не [unknown]. gpgtools.tenderapp.com/kb/faq/…
cmcginty

0

Я імпортував із резервної копії, яка мала стару версію gpg. Оскільки старий комп'ютер був недоступний, лише резервна копія, я не міг його експортувати спочатку. Це те, що працювало для мене.

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

Якщо ви хочете імпортувати секретні ключі, не вводячи парольну фразу негайно, скористайтеся --batchопцією.

Щоб перевірити відкриті ключі:

gpg --list-keys

Щоб перевірити секретні ключі:

gpg --list-secret-keys
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.