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


70

Je veux générer une RSAclé GPGet l'utiliser dans la SSHconnexion. Est-ce seulement possible? Si c'est le cas, comment?

edit: voir la réponse de @wwerners, je ne l'ai pas essayée mais cela semble être la solution actuelle (à partir de 2018)

Réponses:


26

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:


Cette réponse devrait être celle acceptée. :)
Inkeliz

30

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.

Monkeysphhere

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.

Utiliser gpgkey2ssh

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

Utiliser gpg-agent

gpg-agenta l'option --enable-ssh-supportqui 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-addleur clé GPG après avoir lancé de gpg-agentcette 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-agentdevrait être 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 é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 gpgsmaccepter mes paires de clés gpg.

Autres choses que vous pouvez essayer

SSH dispose d'une -Ioption 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-keygenpouvez 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 -iet -m.

Je ne parviens toujours pas à trouver le moyen de tout mettre en place.


5
Notez que cela gpgkey2ssha été remplacé par à --export-ssh-keypartir 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.
MayeulC


Il y a un bon article sur Linode mais ils ont utilisé gpg-agent pour s’authentifier avec SSH. Ils ne convertissent pas la clé secrète gpg en une clé privée SSH.
Xorax

14

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.

  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. Maintenant, ajoutez vos sous - clés d’authentification à ssh-agent :

    monkeysphere s
    

Un peu pertinent: ce fil de discussion gnupg-users .


9

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.