Comment utiliser gpg et SSH ensemble? [dupliquer]

11

Duplicata possible: les
clés GPG et SSH sont-elles interchangeables?

Comment utiliser gpg et SSH ensemble?

Je connais les procédures de base de 1) utiliser gpg pour crypter et décrypter des fichiers texte et 2) générer et utiliser des clés SSH pour accéder à des serveurs distants sans mots de passe.

Je me demande si les deux peuvent être intégrés. Les deux sont-ils indépendants et devraient-ils être séparés dans leur utilisation quotidienne?

qazwsx
la source

Réponses:

7

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

Autres choses que vous pouvez essayer

SSH a la -Ipossibilité 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-keygenpeut 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 peux toujours pas trouver un moyen de tout mettre ensemble.

Claudio Floreani
la source
1
Pour référence future, si vous trouvez deux questions qui sont essentiellement identiques, vous pouvez les signaler comme doublons (en utilisant le flaglien sous la question), plutôt que de poster deux fois la même réponse. Merci pour la réponse détaillée!
nhinkle
Désolé, je ne connais pas cette fonctionnalité. Merci
Claudio Floreani
2
Je ne sais pas avec quoi vous essayez d'accomplir gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. Utilisez-vous teejuste pour voir la sortie? La sortie de cette commande ne peut pas être utilisée par ssh-add; le produit id_rsafichier ne peut pas être chargé dans une ou l' autre ssh-agentou gpg-agent, il ne peut être utilisé directement par ssh.
larsks
2

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.

user1686
la source
Merci pour l'information. Ils sont utiles mais pas suffisants pour répondre à ma question. Je ne sais toujours pas comment intégrer mes certificats PGP et mes clés SSH.
qazwsx
De la documentation Monkeysphere; monkeysphere subkey-to-ssh-agentpour charger votre clé dans l'agent.
user1686