web-dev-qa-db-fra.com

Comment transférer la clé privée et publique PGP sur un autre ordinateur?

J'ai lu - cet article ( lien archivé ) qui expliquait très bien comment configurer PGP sur MacOS. Mais je prévois d'utiliser les clés générées pour la signature des engagements git, donc je pense que je dois transférer les clés vers d'autres ordinateurs. Est-ce correct? Et, si oui, quel est le meilleur moyen de transférer ces clés entre les appareils?

30
erikvold

Oui, vous devrez transférer les clés. Mac et Linux fonctionnent de la même manière, stockant les clés de ~/.gnupg. Le moyen le plus sûr de transférer les fichiers utilise scp (partie de SSH):

scp -rp ~/.gnupg othermachine:

Cependant, vous aurez besoin d'avoir ssh travailler en premier.

Les transferts avec, disons, un lecteur flash USB n'est pas une bonne idée, car votre clé privée sera laissée sur ce lecteur, même après avoir supprimé le fichier. Bien que cela soit protégé par une phrase secrète, si quelqu'un a eu une copie du fichier clé, ils pourraient monter une attaque de force brute à long terme à leur laiure.

Je ne connais pas l'emplacement du répertoire sur Windows. La documentation GPG dira et le contenu sera presque certainement identique.

La copie de l'ensemble du porte-clés est rapide et facile, mais vous voulez parfois pouvoir déplacer des touches individuelles entre les machines sans écraser tout le porte-clés et perdre les clés qui sont déjà là. Copier des clés individuelles sélectivement peut être effectuée avec gpg --export-secret-key et gpg --import. Si vous avez un accès SSH à la machine de destination, vous pouvez le faire avec un tuyau et vous n'avez pas besoin de stocker une clé intermédiaire nulle part:

Si vous êtes sur la machine qui a déjà la clé:

gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import

Si vous êtes sur la machine qui a besoin de la clé:

ssh othermachine gpg --export-secret-key SOMEKEYID | gpg --import

Si gpg n'est pas dans l'un des endroits par défaut de la machine distante (par exemple, il est dans /opt/local/bin sur un Mac) Vous devrez donner son chemin complet vers SSH ou le lymner dans l'un des endroits standard tels que /usr/local/bin.

Notez que les données transférées sont toujours protégées par la phrase secrète et la touche aura la même phrase secrète à la destination comme à la source. Si vous souhaitez avoir des phraséphrases différentes dans chaque lieu, vous devrez modifier la phrase secrète à la destination ou la modifier temporairement à la source avant de l'exporter. J'avais besoin de partager une clé secrète avec un collègue, afin de lui donner la possibilité de mettre à jour un package Debian Repo Nous gérons tous les deux, mais je ne voulais pas partager ma phrase secrète avec lui. J'ai donc changé la phrase secrète vers quelque chose de temporaire, lui envoya la clé exportée (par courrier électronique crypté GPG!), Lui a dit la phrase secrète temporaire orale et lui a demandé de définir une nouvelle phrase secrète immédiatement après l'importation de la clé. J'ai ensuite changé la phrasephrase sur ma copie de la clé de la clé à ce qu'elle était à l'origine.

57
Neil Mayhew