Réponses:
Je sais que ceci est un ancien post, mais pour les gens comme moi trébucher dessus:
Il est maintenant (depuis gpg 2.1) possible d'extraire simplement les clés ssh en utilisant directement GPG:
gpg --export-ssh-key <key id>!
.
La !
marque est facultative, elle rend la clé primaire exportable et omet de vérifier si la clé est compatible avec l'authentification ([CA]).
Détails:
Je fais des recherches sur ce sujet et je peux vous donner quelques indices, mais je n'ai pas encore trouvé le moyen de le faire fonctionner.
Monkeysphere semble un projet très intéressant, mais je n’ai pas pu le compiler sous Mac OS X sans encombrer mon petit espace disque disponible avec MacPorts.
La première façon que je vous suggère d’essayer est de générer une entrée compatible allowed_keys à partir de votre clé (par exemple, BFB2E5E3) avec
gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys
Ici, je l'ai ajouté à mon hôte local car j'ai utilisé un serveur ssh à des fins de test, mais vous devez bien sûr l'ajouter à l'hôte cible ~/.ssh/authorized_keys
. Ensuite, vous devez dire à SSH d'utiliser la partie privée de cette clé lors de l'authentification, mais exporter une version blindée ASCII de la paire de clés ne fonctionne pas:
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
a l'option --enable-ssh-support
qui lui permet de l'utiliser comme remplacement immédiat du bien connu ssh-agent
. J'ai lu que certaines personnes essayaient d'ajouter via ssh-add
leur clé GPG après avoir lancé de gpg-agent
cette manière:
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
Mais je ne pense pas que cela fonctionnera jamais. La page de manuel de gpg-agent dit:
Les clés SSH, qui doivent être utilisées via l'agent, doivent être ajoutées à l'agent gpg par le biais de l'utilitaire ssh-add. Lorsqu'une clé est ajoutée, ssh-add demande le mot de passe du fichier de clé fourni et envoie le matériel de clé non protégé à l'agent. Ceci oblige l'agent-gpg à demander une phrase secrète, qui doit être utilisée pour chiffrer la clé nouvellement reçue et la stocker dans un répertoire spécifique à l'agent-gpg.
Il semble donc que cela gpg-agent
devrait être utilisé comme mesure supplémentaire pour protéger vos clés SSH avec un cryptage GPG.
Jérôme Pouiller écrit sur son blog que l'utilitaire Gpgsm peut exporter des clés et des certificats dans PCSC12; ils peuvent ensuite être utilisés par 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
Mais je n'ai pas trouvé le moyen de faire gpgsm
accepter mes paires de clés gpg.
SSH dispose d'une -I
option permettant de spécifier la bibliothèque partagée PKCS # 11 ssh
à utiliser pour communiquer avec un jeton PKCS # 11 fournissant la clé RSA privée de l'utilisateur.
ssh-keygen
pouvez utiliser la clé publique ou privée RFC4716 / SSH2, les clés publiques PEM PKCS8 et les clés publiques PEM pour générer une clé privée (ou publique) compatible OpenSSH à l’aide des options -i
et -m
.
Je ne parviens toujours pas à trouver le moyen de tout mettre en place.
gpgkey2ssh
a été remplacé par à --export-ssh-key
partir de la version 2.1.11 (2016-01-26). Il m'a fallu un certain temps pour m'en rendre compte. L'utilisation est gpg --export-ssh-key BFB2E5E3
.
Non, ils ne sont pas interchangeables. Oui, il est possible d'utiliser des clés GPG pour l'authentification. Le package Monkeysphere contient des outils permettant d'extraire la paire de clés RSA brute de votre certificat GPG.
Votre certificat GPG nécessite une sous-clé avec l'indicateur de capacité "authentification". Pour créer une telle sous-clé, exécutez une fois:
monkeysphere g
Maintenant, ajoutez vos sous - clés d’authentification à ssh-agent :
monkeysphere s
Un peu pertinent: ce fil de discussion gnupg-users .
Grâce aux informations des réponses à cette question et à l'aide de la liste de diffusion gnupg-users, j'ai pu comprendre comment utiliser ma clé GPG pour l'authentification SSH. Comme déjà mentionné par Claudio Floreani dans sa réponse, il existe plusieurs méthodes possibles pour le faire.
J'ai écrit un article de blog sur quelques solutions possibles: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key
Pour résumer: Soit vous utilisez GnuPG 2.1, qui est actuellement en version bêta. Lorsque vous utilisez cette version, vous pouvez simplement lancer gpg-agent avec l'option --enable-ssh-support et ajouter la clé d'accès pour votre clé GPG (ou sous-clé) dans ~ / .gnupg / sshcontrol.
Lorsque vous utilisez la version actuelle stable de GnuPG (2.0.x), vous pouvez utiliser monkeysphere pour ajouter votre clé à gpg-agent (à nouveau, après avoir lancé gpg-agent avec l'option --enable-ssh-support).
Il est également possible d'utiliser le trousseau de clés GNOME (ou même l'agent ssh habituel) à l'aide de monkeysphere. Le seul problème dans ce cas est que vous devrez rajouter votre clé pour vous reconnecter (dans Gnome ou XFCE). Pour résoudre ce problème, vous pouvez exporter manuellement votre clé et la convertir.