Je fais des recherches sur ce sujet et je peux vous donner quelques conseils, mais je n'ai pas encore trouvé de moyen de le faire fonctionner.
Monkeysphere
Monkeysphere semble un projet très intéressant, mais je n'ai pas pu le compiler sous Mac OS X sans obstruer mon petit espace disque libre 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 compatible author_keys à 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 depuis que j'ai exécuté un serveur ssh à des fins de test, mais bien sûr, vous devez 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 simplement 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
Utilisation de gpg-agent
gpg-agent
a l'option --enable-ssh-support
qui lui permet de l'utiliser comme un remplacement sans rendez-vous pour le bien connu ssh-agent
. J'ai lu que certaines personnes essayaient d'ajouter via ssh-add
leur clé GPG après le lancement de gpg-agent
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 gpg-agent indique:
Les clés SSH, qui doivent être utilisées via l'agent, doivent être ajoutées à l'agent gpg initialement via l'utilitaire ssh-add. Lorsqu'une clé est ajoutée, ssh-add demandera le mot de passe du fichier de clés fourni et enverra le matériel de clé non protégé à l'agent; cela 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 une 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; 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é de moyen de faire gpgsm
accepter mes paires de clés gpg.
Autres choses que vous pouvez essayer
SSH a la -I
possibilité 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
peut 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 peux toujours pas trouver un moyen de tout mettre ensemble.
flag
lien sous la question), plutôt que de poster deux fois la même réponse. Merci pour la réponse détaillée!gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
. Utilisez-voustee
juste pour voir la sortie? La sortie de cette commande ne peut pas être utilisée parssh-add
; le produitid_rsa
fichier ne peut pas être chargé dans une ou l' autressh-agent
ougpg-agent
, il ne peut être utilisé directement parssh
.Techniquement oui, les clés PGP peuvent être utilisées pour l'authentification SSH. Ce que les gens appellent une "clé PGP" est plus un certificat , contenant des paires de clés RSA, ECDSA ou autres (la clé primaire et les sous-clés) ainsi que les métadonnées du certificat. En fait, il y a même un indicateur d'utilisation "d'authentification" défini.
Il n'est cependant pas recommandé d'utiliser la même clé à des fins multiples; cependant, cela est facilement résolu car vous pouvez facilement ajouter une sous-clé d'authentification uniquement à votre certificat PGP (via
gpg --expert --edit-key
). Vous aurez une clé primaire de signature / certification, une sous-clé de chiffrement et une sous-clé d'authentification.Dans la pratique cependant, je n'ai pas été en mesure de comprendre comment authentifier directement à l'aide d'une clé PGP, bien que je sois juste trop paresseux pour essayer plusieurs idées. La suite Monkeysphere dispose d'un outil pour ajouter vos sous-clés d'authentification GPG à ssh-agent, devrait être simple. Mais il devrait y avoir quelques anciens messages Super User à ce sujet.
la source
monkeysphere subkey-to-ssh-agent
pour charger votre clé dans l'agent.