90 votes

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

Je veux générer un RSA à la clé GPG et l'utiliser dans SSH connexion. Est-ce possible ? Si oui, comment ?

edit : voir la réponse de @wwerner, je n'ai pas essayé mais il semble que ce soit la solution actuelle (en date de 2018).

54voto

wwerner Points 655

Je sais que c'est un vieux post, mais pour les gens comme moi qui tombent dessus :

Il est maintenant (depuis gpg 2.1) possible d'extraire simplement les clés ssh directement en utilisant gpg : gpg --export-ssh-key <key id>! .

Le site ! est facultative, elle rend la clé primaire exportable et omet de vérifier si la clé est authentifiable ([CA]).

Détails :

34voto

Claudio Floreani Points 782

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

Monkeysphere

Monkeysphere semble être un projet très intéressant, mais je n'ai pas réussi à le compiler sous Mac OS X sans encombrer mon peu d'espace disque libre avec des MacPorts.

Utilisation de gpgkey2ssh

La première méthode que je vous suggère d'essayer est de générer une entrée authorized_keys compatible à partir de votre identifiant de 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 indiquer à SSH d'utiliser la partie privée de cette clé lors de l'authentification, mais la simple exportation d'une version ASCII blindée 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

Utilisation de gpg-agent

gpg-agent a l'option --enable-ssh-support qui lui permet de l'utiliser comme un substitut de la fameuse ssh-agent . J'ai lu que certaines personnes essayaient d'ajouter via ssh-add leur clé GPG après le lancement 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 pense que ça ne marchera jamais. Le site Page de manuel de gpg-agent dit :

Les clés SSH, qui doivent être utilisées par l'agent, doivent être ajoutées à l'agent gpg initialement par l'utilitaire ssh-add.  Lorsqu'une clé est ajoutée, ssh-add demandera le mot de passe du fichier clé fourni et enverra la clé non protégée à l'agent ; cela amène l'agent-gpg à demander une phrase de passe, 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 gpg-agent doit être utilisé comme une mesure supplémentaire pour protéger vos clés SSH avec un cryptage GPG.

Convertir 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 en 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 rendre gpgsm accepter mes paires de clés gpg.

Autres choses que vous pouvez essayer

SSH a un -I pour spécifier la bibliothèque partagée PKCS#11 ssh doit utiliser pour communiquer avec un jeton PKCS#11 fournissant la clé privée RSA de l'utilisateur. ssh-keygen peut utiliser les clés publiques ou privées 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 avec OpenSSH à l'aide de la commande -i y -m options.

Je n'arrive toujours pas à trouver un moyen d'assembler tout ça.

15voto

James Mertz Points 390

Non, elles ne sont pas interchangeables. Oui, il est possible d'utiliser des clés GPG pour l'authentification - la clé Monkeysphere contient des outils permettant d'extraire la paire de clés RSA brute de votre certificat GPG.

  1. Votre certificat GPG aura besoin d'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 .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X