Les clés GPG et SSH sont-elles interchangeables?

Je souhaite générer une clé RSA dans GPG et l'utiliser en connexion SSH . Est-ce même possible? Si c'est le cas, comment?

Je fais des recherches sur ce sujet et je peux vous donner des conseils, mais je n'ai pas encore trouvé de moyen de le faire fonctionner.

Monkeysphere

Monkeysphere semble être un projet très intéressant, mais je n'ai pas pu le compiler sous Mac OS X sans obstruer mon petit espace disque gratuit avec MacPorts.

Utilisation de gpgkey2ssh

La première façon que je vous suggère d'essayer est de générer une entrée autorisée autorisée autorisée à partir de votre identifiant clé (par exemple, BFB2E5E3) avec

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

Ici, je l'ai ajouté à mon localhost depuis que j'ai lancé un serveur ssh à des fins de test, mais bien sûr, vous devriez l'ajouter à l'hôte cible ~/.ssh/authorized_keys . Ensuite, vous devez indiquer à SSH d'utiliser la partie privée de cette clé pendant l'authentification, mais simplement l'exportation d'une version blindée ASCII du couple-clé 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 

Utilisation de gpg-agent

Gpg-agent a l'option --enable-ssh-support qui lui permet de l'utiliser comme un remplacement drop-in pour le bien connu ssh-agent. J'ai lu certaines personnes essayant d'ajouter via ssh-ajouter leur clé GPG après le lancement de gpg-agent de cette façon:

 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 dit:

Les clés SSH, qui doivent être utilisées par l'intermédiaire de l'agent, doivent être ajoutées au gpg-agent initialement via l'utilitaire ssh-add. Lorsqu'une clé est ajoutée, ssh-add demandera le mot de passe du fichier clé fourni et enverra le matériel clé non protégé à l'agent; Cela provoque le gpg-agent à 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 au gpg-agent.

Il semble donc que gpg-agent soit utilisé comme mesure supplémentaire pour protéger vos clés SSH avec un cryptage GPG.

Conversion d'une clé GPG en OpenSSH

Jérôme Pouiller, dans son blog, écrit que l'utilitaire Gpgsm peut exporter des clés et des certificats dans PCSC12 et utiliser par OpenSSH en utilisant gpgsm:

 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é un moyen de faire gpgsm accepter mes clés de gpg.

Autres choses que vous pouvez essayer

SSH a une option -I pour spécifier la bibliothèque partagée PKCS # 11 que ssh devrait utiliser pour communiquer avec un jeton PKCS # 11 fournissant la clé RSA privée de l'utilisateur. Ssh-keygen peut utiliser la clé publique ou privée RFC4716 / SSH2, les clés publiques PEM PKCS8 et les clés publiques de PEM pour générer une clé privée (ou publique) compatible OpenSSH en utilisant les options -i et -m .

Pourtant, je manque une façon de tout mettre ensemble

Non, ils ne sont pas interchangeables. Oui, il est possible d'utiliser les clés GPG pour l'authentification – le paquet Monkeysphere dispose d'outils pour extraire le couple de clés RSA brut de votre certificat GPG.

  1. 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 
  2. Ajoutez maintenant vos sous clés d'authentification à ssh-agent :

     monkeysphere s 

Un peu pertinent: ce thread gnupg-users .

Avec l'information tirée des réponses sur cette question et l'aide de la liste de messagerie de 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 quelques méthodes possibles pour le faire.

J'ai écrit un blogpost sur certaines 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 démarrer gpg-agent avec l'option –enable-ssh-support et ajouter la clé de jeu pour vous GPG clé (ou sous-clé) dans ~ / .gnupg / sshcontrol.

Lorsque vous utilisez la version actuelle GnuPG stable (2.0.x), vous pouvez utiliser monkeysphere pour ajouter votre clé à gpg-agent (à nouveau, après avoir démarré gpg-agent avec l'option –enable-ssh-support).

Il est également possible d'utiliser le porte-clés GNOME (ou même le ssh-agent régulier) à l'aide de la monéphrite. Le seul problème dans ce cas est que vous devrez ré-ajouter votre clé lors de la connexion (dans Gnome ou XFCE). Pour résoudre ce problème, vous pouvez exporter manuellement votre clé et la convertir.