Я использую ключ RSA PGP размером 4096 байт; Поскольку SSH также использует стандарт RSA, возможно ли вообще использовать ключ PGP в качестве ключа SSH без установки дополнительного программного обеспечения на сервере (и как можно реже на клиенте)?
Есть несколько способов, которые могут работать или не работать:
gpg2
в Debian поставляется с gpgkey2ssh
инструмент и gpg-agent
также может действовать как агент ssh, но я не мог понять, как на самом деле заставить ssh использовать ключ для аутентификации.SSH2 Версия 2.0.13 представила поддержку аутентификации PGP.
С помощью информации из ответов на этот вопрос и помощи списка рассылки gnupg-users я смог выяснить, как использовать свой ключ GPG для аутентификации SSH. Для этого есть несколько возможных способов.
Я написал сообщение о некоторых возможных решениях: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key
Подводя итог: либо вы используете GnuPG 2.1, который в настоящее время находится в стадии бета-тестирования. При использовании этой версии вы можете просто запустить gpg-agent с параметром --enable-ssh-support и добавить keygrip для вашего ключа GPG (или подраздела) в ~ / .gnupg / sshcontrol.
Когда вы используете текущую стабильную версию GnuPG (2.0.x), вы можете использовать monkeysphere, чтобы добавить свой ключ в gpg-agent (опять же, после запуска gpg-agent с параметром --enable-ssh-support).
Также можно использовать связку ключей GNOME (или даже обычный ssh-агент) с помощью monkeysphere. Единственная проблема в этом случае заключается в том, что вам придется повторно добавить свой ключ при повторном входе в систему (в Gnome или XFCE). Чтобы решить эту проблему, вы можете вручную экспортировать свой ключ и преобразовать его.
Этот документ показывает, как это сделать на клиенте SSH.com; Я не уверен, что он работает с OpenSSH, но, возможно, стоит попробовать.
Найдите ручку желаемого закрытого ключа
gpg --list-secret-keys --with-keygrip
gpgsm --gen-key -o /tmp/keyring
2 # выбрать существующий ключ
keygrip_id
3 # шифрование ключевой цели, это, вероятно, не имеет значения
C = манекен, ST = манекен, L = манекен, O = манекен, OU = манекен, CN = манекен # Введите фиктивное имя субъекта X.509
nonexistent@dummy.com #email также
Остальные параметры являются необязательными, поэтому просто введите их, подтвердите информацию и введите пароль дешифрования выбранного ключа.
gpgsm -o /tmp/key.p12 --export-secret-key-p12 '&keygrip_id'
Введите еще раз пароль шифрования, как и прежде, чтобы расшифровать его. Затем введите новый пароль, который следует использовать для защиты файла .p12. Если ваша папка / tmp находится в ОЗУ, как моя, вы можете оставить ее пустой, так как она будет безопасно стерта после перезагрузки.
Кроме того, он требует удаления первых 4 строк вывода, чтобы он начинался с --- BEGIN PRIVATE KEY ---
openssl pkcs12 -in /tmp/key.p12 -nodes -nocerts | tail -n +5 > /tmp/sshkey
chmod 600 /tmp/sshkey
Вот и ваш sshkey готов к использованию ssh-клиентом. Надеюсь, это поможет, для меня это было необходимо, так как я не смог установить monkeysphere.