Чи взаємозамінні ключі GPG та SSH?


70

Я хочу створити RSAключ GPGі використовувати його для SSHвходу. Це навіть можливо? Якщо так, то як?

редагувати: дивіться відповідь @ wwerner, я не пробував, але це, здається, є поточним рішенням (станом на 2018 рік)

Відповіді:


26

Я знаю, що це стара публікація, але для таких людей, як я, спотикаючись:

Зараз (оскільки gpg 2.1) можна просто витягнути ключі ssh безпосередньо за допомогою gpg : gpg --export-ssh-key <key id>!.

!Знак НЕ є обов'язковим, це робить первинний ключ експортним і опускає перевірки , чи є ключ аутентифікації з підтримкою ([СА]).

Деталі:


Ця відповідь має бути прийнятою. :)
Інкеліз

30

Я займаюся деякими дослідженнями на цю тему і можу дати вам підказки, але я ще не знайшов способу змусити її працювати.

Мавпасфера

Monkeysphere здається дуже цікавим проектом, але мені не вдалося скомпілювати його під Mac OS X, не засмітивши моє маленьке вільне місце на диску MacPorts.

Використання gpgkey2ssh

Перший спосіб, який я пропоную вам спробувати, - це створити сумісний запис дозволених ключів з вашого ідентифікатора ключа (наприклад, BFB2E5E3) за допомогою

gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys

Тут я додав його до свого localhost, оскільки я запустив ssh-сервер для тестування, але, звичайно, слід додати це до цільового хоста ~/.ssh/authorized_keys. Далі потрібно сказати SSH використовувати приватну частину цього ключа під час аутентифікації, але просто експортувати броньовану версію ASCII з клавіатури не працює:

gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost

Використання gpg-агента

gpg-agentє можливість, --enable-ssh-supportщо дозволяє використовувати його як замінювальний замінник для добре відомого ssh-agent. Я читав про деяких людей, які намагаються додати через ssh-addсвій ключ GPG після запуску gpg-agentтаким чином:

gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc

Але я не думаю, що це колись спрацює. На сторінці gpg-агента написано:

Ключі SSH, які потрібно використовувати через агент, потрібно додати до gpg-агента спочатку через утиліту ssh-add. Коли ключ доданий, ssh-add запитає пароль наданого файлу ключів та надішле незахищений ключовий матеріал агенту; це змушує gpg-агент запитувати парольну фразу, яку слід використовувати для шифрування щойно отриманого ключа та зберігання його у специфічній директорії gpg-агента.

Тож здається, що це gpg-agentслід використовувати як додатковий захід для захисту ваших SSH ключів із шифруванням GPG.

Перетворення ключа GPG у OpenSSH

Jérôme Pouiller у своєму блозі пише, що утиліта Gpgsm може експортувати ключі та сертифікати в PCSC12; вони можуть бути використані OpenSSH:

gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub

Але я не знайшов способу змусити gpgsmприйняти свої gpg клавіші.

Інші речі, які ви можете спробувати

SSH має -Iможливість вказати спільну бібліотеку PKCS # 11 sshдля спілкування з маркером PKCS # 11, що забезпечує приватний ключ RSA користувача. ssh-keygenможна використовувати відкритий або приватний ключ RFC4716 / SSH2, відкриті ключі PEM PKCS8 і відкриті ключі PEM для генерації приватного (або відкритого) ключа, сумісного з OpenSSH, використовуючи параметри -iта -m.

Але я не можу знайти спосіб зібрати все це разом.


5
Зауважимо, що gpgkey2sshйого замінено на --export-ssh-keyверсію 2.1.11 (2016-01-26). Мені знадобився певний час, щоб зрозуміти це. Використання є gpg --export-ssh-key BFB2E5E3.
MayeulC


На Linode є хороший пост, але вони використовували gpg-агент для автентифікації з SSH. Вони не перетворюють секретний ключ gpg в приватний ключ SSH.
Xorax

14

Ні, вони не взаємозамінні. Так, для аутентифікації можна використовувати ключі GPG - пакет Monkeysphere має інструменти для вилучення необмеженої RSA-ключа з вашого сертифіката GPG.

  1. Для вашого сертифіката GPG потрібен підрозділ із прапором можливості "автентифікація". Щоб створити такий підрозділ, запустіть один раз:

    monkeysphere g
    
  2. Тепер додайте підрозділи аутентифікації до ssh-agent :

    monkeysphere s
    

Дещо актуальне: ця нитка користувачів gnupg .


9

Маючи інформацію з відповідей на це питання та допомогу розсилки користувачів gnupg-користувачів, я зміг зрозуміти, як використовувати мій GPG-ключ для аутентифікації SSH. Як уже згадував у своїй відповіді Клаудіо Флореані, існує кілька можливих методів для цього.

Я написав повідомлення в блозі про деякі можливі рішення: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key

Підводячи підсумок: Ви використовуєте GnuPG 2.1, який наразі знаходиться в бета-версії. Використовуючи цю версію, ви можете просто запустити gpg-агент за допомогою опції --enable-ssh-support та додати ключ-ключ для вашого ключа GPG (або підрозділу) в ~ / .gnupg / sshcontrol.

Коли ви використовуєте поточну стабільну версію GnuPG (2.0.x), ви можете використовувати monkeysphere, щоб додати свій ключ до gpg-агента (знову ж таки, після запуску gpg-агента з опцією --enable-ssh-support).

Можна також використовувати брелок GNOME (або навіть звичайний ssh-агент) за допомогою мавпсфери. Єдина проблема в цьому випадку полягає в тому, що вам доведеться повторно додати свій ключ при повторному вході (в Gnome або XFCE). Щоб вирішити це, ви можете вручну експортувати свій ключ і перетворити його.

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