Я провожу некоторые исследования по этой теме и могу дать вам несколько советов, но я пока не нашел способа заставить это работать.
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
.
Тем не менее я не могу найти способ собрать все это вместе.