Configuration d'un référentiel git chiffré

30

Situation

Salut, je voudrais enregistrer des données avec git, cryptées (sur une plate-forme comme bitbucket ou github ). Par conséquent, la question:

Question

Je recherche différentes méthodes sans tracas sur:
Comment configurer un référentiel crypté sur bitbucket (/ github)? Maintenant, je suis nouveau sur git, donc une instruction avec toutes les étapes nécessaires ou étape par étape serait très appréciée!

"Recherche"

git-crypt
J'ai trouvé git-crypt , mais sur le site, il est mentionné qu'il est destiné au cryptage d'un seul fichier. Si l'on voulait crypter l'ensemble du référentiel, il les transmet à git-remote-gcrypt .

git-remote-gcrypt
Dans leur fichier README.rst, ils le disent aussi simplement que

Démarrage rapide

git remote add cryptremote gcrypt::rsync://example.com:repo
git push cryptremote master
> gcrypt: Setting up new repository
> gcrypt: Remote ID is :id:7VigUnLVYVtZx8oir34R
> [ more lines .. ]
> To gcrypt::[...]
> * [new branch]      master -> master

ou moins

Exemples

# notice that the target git repo must already exist and its
# `next` branch will be overwritten!
git remote add gitcrypt gcrypt::[email protected]:repo#next
git push gitcrypt master

Essaie

Je préfère le chiffrement complet du référentiel, j'ai donc essayé git-remote-gcryptavec des variantes du démarrage rapide et de l' exemple . Jusqu'à présent, j'ai essayé de pousser un référentiel existant en suivant leurs instructions. Ce qui donne ceci: (note: j'ai délibérément changé le nom d'utilisateur en user)

-> avec sshcomme dans l'exemple fourni

[...]/git_test$ git remote add origin gcrypt::[email protected]:user/test.git
[...]/git_test$ git push -u origin --allgcrypt: Development version -- Repository format MAY CHANGE
gcrypt: Repository not found: [email protected]:user/test.git
gcrypt: Setting up new repository
gcrypt: Remote ID is :id: ...
Zähle Objekte: 10, Fertig.
Komprimiere Objekte: 100% (6/6), Fertig.
Total 10 (delta 0), reused 0 (delta 0)
gcrypt: Encrypting to: --throw-keyids --default-recipient-self
gcrypt: Requesting manifest signature
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
error: Fehler beim Versenden einiger Referenzen nach 'gcrypt::[email protected]:user/test.git'

ou avec https(qui a fonctionné)

[...]/git_test$ git remote add gitcrypt gcrypt::https://[email protected]/user/test.git
[...]/git_test$ git push -u gitcrypt --allgcrypt: Development version -- Repository format MAY CHANGE
Password for 'https://[email protected]': 
gcrypt: Repository not found: https://[email protected]/user/test.git
gcrypt: Setting up new repository
Password for 'https://[email protected]': 
gcrypt: Remote ID is :id: ...
Zähle Objekte: 10, Fertig.
Komprimiere Objekte: 100% (6/6), Fertig.
Total 10 (delta 0), reused 0 (delta 0)
gcrypt: Encrypting to: --throw-keyids --default-recipient-self
gcrypt: Requesting manifest signature
Password for 'https://[email protected]': 
To gcrypt::https://[email protected]/user/test.git
 * [new branch]      master -> master
Branch master konfiguriert zum Folgen von Remote-Branch master von gitcrypt.

Néanmoins, je ne comprends pas comment ajouter des utilisateurs ou même simplement tirer ma sauvegarde sur une autre machine (puisque ma clé gpg a été générée localement)!? N'hésitez pas à répondre simplement à l'utilisation de git-remote-gcrypt.

gr4nt3d
la source
Celles-ci pourraient être liées: - superuser.com/questions/676497/… Le lien [filtre] [3] fourni m'a amené à croire qu'il s'agit d'une utilisation délicate d'une fonctionnalité git qui change le code (/ contenu) lors du push / pull. Et l'en- / décryptage se fait par les scripts fournis. Si tel est le cas, je préférerais plutôt une méthode plus facile à configurer sans les tracas de ces scripts - des programmes comme git-remote-gcrypt. De plus, cela révélerait le contenu du référentiel, non?
gr4nt3d
- superuser.com/questions/900656/… Question similaire spécifiquement avec bitbucket qui n'a pas de réponse.
gr4nt3d
1
Jetez un œil à gist.github.com/shadowhand/873637
Nifle
@Nifle semble être la méthode de filtrage comme dans mon premier commentaire, non? Est-ce que cela crypte l'ensemble du référentiel ou seulement le contenu du fichier?
gr4nt3d
1
Avez-vous regardé git-remote-gcrypt ou Keybase ?
harrymc

Réponses:

19

Un outil gratuit et open-source est Keybase :

Git prend en charge les assistants distants. Et nous en avons créé un open source.

L'assistant distant de Keybase effectue toute la crypto tout en laissant git faire son travail. Cela peut sembler impressionnant, mais Keybase n'a pas réimplémenté git à partir de zéro. Nous fournissons une aide à distance, propulsée par l'excellent projet go-git, auquel nous avons commencé à contribuer.

Nous apportons à la table: (1) la cryptographie, (2) la gestion des clés d'équipe + multi-appareils, (3) un concept d'identité plus sûr.

Il est chiffré de bout en bout. Il est hébergé, par exemple, GitHub, mais seulement vous (et vos coéquipiers) pouvez déchiffrer tout cela. Pour Keybase, tout n'est qu'un désordre confus. Pour vous, c'est un paiement régulier sans étapes supplémentaires.

Même les noms de référentiel et les noms de branche sont chiffrés, et donc illisibles par le personnel de Keybase ou les infiltrés.

Le travail d'équipe est pris en charge via les équipes Keybase :

Une équipe Keybase est un groupe de personnes nommé, avec une adhésion flexible. Disons que vous travaillez sur un projet appelé Treehouse. Vous pouvez enregistrer Treehouse sur Keybase. Ce nom d'équipe est universel; il ne peut y avoir qu'une seule équipe Keybase avec un nom donné.

Les équipes reçoivent des chats et des canaux. Le chat ressemble un peu à Slack ou Discord:

Mais le travail d'équipe de Keybase est chiffré de bout en bout, ce qui signifie que vous n'avez pas à vous soucier des piratages de serveur.

Keybase

harrymc
la source
2
Bel outil là-bas! Cependant, il semble que ce soit un écosystème fermé. Je n'ai trouvé aucun indice montrant comment travailler avec des utilisateurs non-Keybase. Est-ce possible? Je suppose que forcer toute une équipe à utiliser cet outil ou en dépendre l'emporte toujours sur les avantages.
gr4nt3d
C'est open-source. Un outil que vous avez développé serait-il plus ouvert?
harrymc
Je parlais de l'usage; et je ne sais pas comment les assistants à distance git fonctionnent réellement. Pourrait-on utiliser une clé (qui n'est pas pgp, mais quelque chose de nouveau, non?) Et cet assistant mais sans l'interface graphique?
gr4nt3d
Je ne peux pas répondre à ces questions - je n'y suis pas allé si profondément.
harrymc
les outils tiers peuvent-ils fonctionner avec lui?
Mikey