Як використовувати gpg та SSH разом? [дублікат]


11

Можливий дублікат:
чи є GPG та SSH ключі взаємозамінні?

Як використовувати gpg та SSH разом?

Я знаю основні процедури 1) використання gpg для шифрування та дешифрування текстових файлів та 2) створення та використання ключів SSH для доступу до віддалених серверів без паролів.

Цікаво, чи можна ці два інтегрувати. Є ці два пов'язані між собою і їх слід розділяти при щоденному використанні?

Відповіді:


7

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

Мавпасфера

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

Джером Пуулер у своєму блозі пише, що утиліта 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.

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


1
Для подальшого ознайомлення, якщо ви знайдете два питання, які по суті є однаковими, ви можете позначити їх як дублікати (використовуючи flagпосилання під запитанням), а не надсилаючи одну і ту ж відповідь двічі. Дякуємо за детальну відповідь!
nhinkle

Вибачте, я не знаю про цю функцію. Дякую
Клаудіо Флореані

2
Я не впевнений, що ти намагаєшся досягти gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. Ви використовуєте teeпросто так, щоб ви могли бачити вихід? Вихід цієї команди не підходить для використання ssh-add; згенерований id_rsaфайл не може бути завантажений у або, ssh-agentабо gpg-agentне може бути використаний ним безпосередньо ssh.
larsks


2

Технічно так, PGP-ключі можуть використовуватися для аутентифікації SSH. Те, що люди називають "ключем PGP", - це більше сертифікат , що містить звичайні RSA, ECDSA або інші ключові пари (первинний ключ та підрозділи) разом з метаданими сертифіката. Насправді, навіть визначено прапор використання "автентифікації".

Не рекомендується використовувати один і той же ключ для кількох цілей; однак це легко вирішується, оскільки ви можете легко додати підрозділ, що має лише автентифікацію, до свого PGP-серту (через gpg --expert --edit-key). У вас буде один первинний ключ для підписання / сертифікації, підрозділ шифрування та підрозділ аутентифікації.

На практиці я не зміг зрозуміти, як перевірити автентифікацію безпосередньо за допомогою PGP-ключа, хоча я просто лінувався спробувати декілька ідей. У наборі Monkeysphere є інструмент для додавання ваших підрозділів аутентифікації GPG до ssh-агента, має бути простим. Але на цьому має бути кілька старих публікацій Super User.


Спасибі за інформацію. Вони корисні, але недостатньо для відповіді на моє запитання. Я досі не знаю, як інтегрувати свої PGP сертифікати та SSH ключі.
qazwsx

З Документів Мавпсфери; monkeysphere subkey-to-ssh-agentщоб завантажити ключ в агент.
користувач1686
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.