Recherche de site Web

Comment créer des dépôts git chiffrés avec git-remote-gcrypt


Git est, de loin, le système de contrôle de version le plus utilisé. Le fait qu’il soit « distribué » signifie que chaque utilisateur peut cloner sa propre copie complète d’un dépôt sur lequel il peut travailler même hors ligne, en ne poussant les modifications vers un dépôt distant que lorsqu’il est prêt. Les dépôts Git ne sont pas conçus pour héberger des informations sensibles, mais dans certaines situations, la capacité de chiffrer de manière transparente le contenu d’un dépôt peut s’avérer utile. L’assistant git remote-gcrypt est conçu avec cet objectif à l’esprit.

Dans ce tutoriel, nous voyons comment installer et utiliser git-remote-gcrypt sur certaines des distributions Linux les plus utilisées et comment l’utiliser pour créer des dépôts git chiffrés.

Dans ce tutoriel, vous allez apprendre :

  • Comment installer git-remote-gcrypt
  • Comment configurer un dépôt git chiffré avec git-remote-gcrypt

Installation

Git-remote-gcrypt est essentiellement un script bash, lui-même développé sur github ; il est empaqueté et disponible dans les dépôts des distributions Linux les plus utilisées, avec GPG, qu’il utilise pour chiffrer les données. Les deux paquets peuvent être installés à l’aide du gestionnaire de paquets de votre distribution préférée. sur Fedora, par exemple, nous utiliserions dnf :

sudo dnf install git-remote-gcrypt gpg

Pour installer le paquet sur Debian, ou l’un de ses nombreux dérivés, à la place, nous exécuterions :

sudo apt install git-remote-gcrypt gpg

Création d’un référentiel chiffré

Pour commencer à travailler avec git-remote-gcrypt, nous créons d’abord un dépôt local (appelons-le « test-git-remote-gcrypt »), et nous le complaçons :

git init test-git-remote-gcrypt && cd test-git-remote-gcrypt

Nous devons maintenant créer un dépôt à utiliser en tant que dépôt distant. Pour les besoins de ce tutoriel, je vais en créer un sur Github (peu importe qu’il soit public ou privé) :

À ce stade, nous devons ajouter le dépôt que nous avons créé sur Github en tant que dépôt distant. La procédure est la même que celle que nous utilisons toujours ; la seule chose que nous devons changer est l’URL de la télécommande que nous devons préfixer avec la notation gcrypt :: (dans l’exemple ci-dessous, j’ai utilisé ssh pour communiquer avec la distance, mais la même chose est valable pour « https ») :

git remote add origin gcrypt::git@github.com:egdoc/test-git-remote-gcrypt

Spécification d’une paire de clés GPG pour le chiffrement

Nous avons presque terminé. Maintenant, nous devons spécifier la clé publique GPG qui doit être utilisée pour chiffrer les données. Ici, je supposerai que vous avez déjà une paire de clés disponible, cependant, si vous n’êtes pas familier avec GPG, vous pouvez apprendre à en générer une en lisant ce guide.

Pour spécifier la paire de clés que nous voulons utiliser, nous devons exécuter la commande suivante, à partir du répertoire du référentiel local :

git config remote.<remote>.gcrypt-participants <gpg-public-key-fingerprint>

Où, bien sûr, « <remote> » est un espace réservé pour le nom du distant (« origin », dans ce cas), et <gpg-public-key-fingerprint> doit être remplacé par l’empreinte de la ou des clés publiques que nous voulons utiliser. Plusieurs empreintes digitales peuvent être spécifiées (séparées par des espaces, entre guillemets), pour permettre à plusieurs utilisateurs avec des clés différentes d’accéder au référentiel.

Afin de récupérer l’empreinte d’une clé publique, nous pouvons simplement exécuter la commande suivante :

gpg --list-keys

C’est à peu près tout. Maintenant, nous pouvons créer un fichier factice, le mettre en scène, valider la modification et l’envoyer au dépôt distant :

touch dummyfile
git add dummyfile
git commit -m "first commit"
git push origin master

À ce stade, il nous sera demandé de fournir la phrase de passe pour déverrouiller notre clé secrète GPG afin de déchiffrer le manifeste, qui doit être mis à jour à chaque poussée pour s’assurer qu’il contient les empreintes digitales des clés publiques de tous les participants. Enfin, les modifications seront poussées vers la télécommande.

Si nous jetons maintenant un coup d’œil au contenu du dépôt distant, nous verrons que son contenu est chiffré :

Une chose importante à savoir, c’est que chaque fois que nous poussons vers le dépôt distant, l’option --force est utilisée, donc nous risquons de perdre des commits distants. Afin d’éviter cela, nous devons toujours tirer avant de pousser.

Réflexions finales

Dans ce tutoriel, nous avons appris à créer des dépôts git chiffrés à l’aide de l’assistant git-remote-gcrypt. Bien que vous deviez simplement éviter de placer des informations sensibles dans des dépôts git, surtout s’ils sont hébergés sur des plateformes externes non fiables, il peut parfois être utile de pouvoir pousser de manière transparente du contenu chiffré vers un dépôt. L’une de ces situations qui me vient à l’esprit, par exemple, est l’utilisation de pass : ce gestionnaire de mots de passe a l’avantage de gérer les mots de passe à l’aide d’outils standard comme GPG (pour le cryptage) et git (pour la synchronisation), mais a un point « faible » dans le fait que les mots de passe sont stockés dans des fichiers qui doivent avoir des noms significatifs, exposant ainsi potentiellement des métadonnées (e. g. Votre mot de passe crypté est stocké dans un fichier portant le nom du site pour lequel il est destiné : cela révèle effectivement que vous avez un compte sur cette plateforme). Veuillez jeter un coup d’œil à la page de manuel de git-remote-gcrypt pour vérifier la liste complète des options que vous pouvez utiliser avec l’helper.

Articles connexes: