Відповіді:
Я знаю, що це стара публікація, але для таких людей, як я, спотикаючись:
Зараз (оскільки gpg 2.1) можна просто витягнути ключі ssh безпосередньо за допомогою gpg :
gpg --export-ssh-key <key id>!
.
!
Знак НЕ є обов'язковим, це робить первинний ключ експортним і опускає перевірки , чи є ключ аутентифікації з підтримкою ([СА]).
Деталі:
Я займаюся деякими дослідженнями на цю тему і можу дати вам підказки, але я ще не знайшов способу змусити її працювати.
Monkeysphere здається дуже цікавим проектом, але мені не вдалося скомпілювати його під Mac OS X, не засмітивши моє маленьке вільне місце на диску MacPorts.
Перший спосіб, який я пропоную вам спробувати, - це створити сумісний запис дозволених ключів з вашого ідентифікатора ключа (наприклад, 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-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.
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
.
Але я не можу знайти спосіб зібрати все це разом.
gpgkey2ssh
його замінено на --export-ssh-key
версію 2.1.11 (2016-01-26). Мені знадобився певний час, щоб зрозуміти це. Використання є gpg --export-ssh-key BFB2E5E3
.
Ні, вони не взаємозамінні. Так, для аутентифікації можна використовувати ключі GPG - пакет Monkeysphere має інструменти для вилучення необмеженої RSA-ключа з вашого сертифіката GPG.
Для вашого сертифіката GPG потрібен підрозділ із прапором можливості "автентифікація". Щоб створити такий підрозділ, запустіть один раз:
monkeysphere g
Тепер додайте підрозділи аутентифікації до ssh-agent :
monkeysphere s
Дещо актуальне: ця нитка користувачів gnupg .
Маючи інформацію з відповідей на це питання та допомогу розсилки користувачів 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). Щоб вирішити це, ви можете вручну експортувати свій ключ і перетворити його.