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).
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).
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 :
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 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.
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
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.
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.
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.
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.
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
Maintenant, ajoutez vos sous-clés d'authentification à ssh-agent :
monkeysphere s
Un peu pertinent : ce fil de discussion gnupg-users .
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.