Как использовать gpg и SSH вместе? [Дубликат]

11

Возможное дублирование:
взаимозаменяемы ли ключи GPG и SSH?

Как использовать gpg и SSH вместе?

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

Интересно, могут ли они быть интегрированы? Являются ли эти два не связаны и должны быть разделены в их повседневном использовании?

qazwsx
источник

Ответы:

7

Я провожу некоторые исследования по этой теме и могу дать вам несколько советов, но я пока не нашел способа заставить это работать.

Monkeysphere

Monkeysphere кажется очень интересным проектом, но я не смог скомпилировать его под Mac OS X без засорения моего небольшого свободного дискового пространства с помощью MacPorts.

Использование gpgkey2ssh

Первый способ, который я предлагаю вам попробовать, - это создать совместимую запись authorized_keys из вашего идентификатора ключа (например, BFB2E5E3) с помощью:

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

Здесь я добавил его на свой локальный хост, так как я запускал 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

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-agent написано:

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

Так что, похоже, это 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.
Жаворонки
gpgkey2ssh исчез, --export-ssh-key здесь.
Властимил Овчачик
2

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

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

Однако на практике мне не удалось выяснить, как выполнить аутентификацию с использованием ключа PGP напрямую, хотя мне просто было лень опробовать несколько идей. В Monkeysphere Suite есть инструмент для добавления ваших подразделов аутентификации GPG в ssh-agent, он должен быть простым. Но здесь должно быть несколько постов старшего пользователя.

user1686
источник
Спасибо за информацию. Они полезны, но недостаточны для ответа на мой вопрос. Я до сих пор не знаю, как интегрировать свои сертификаты PGP и ключи SSH.
qazwsx
Из документации по Monkeysphere; monkeysphere subkey-to-ssh-agentзагрузить свой ключ в агент.
user1686