Einrichten eines verschlüsselten Git-Repository

5850
gr4nt3d

Situation

Ich möchte Daten mit git verschlüsselt speichern (auf einer Plattform wie bitbucket oder github ). Daher die Frage:

Frage

Ich bin auf der Suche nach verschiedenen problemlosen Wegen:
Wie kann ich ein verschlüsseltes Repository auf bitbucket (/ github) einrichten? Nun, ich bin neu bei git, daher wäre eine Anweisung mit allen notwendigen Schritten oder Schritt für Schritt sehr dankbar!

"Forschung"

git-crypt
Ich habe git-crypt gefunden, aber auf der Site wird erwähnt, dass es für die Verschlüsselung einzelner Dateien gedacht ist. Wenn man das gesamte Repository verschlüsseln wollte, leiten sie es an git-remote-gcrypt weiter .

git-remote-gcrypt
In ihrer README.rst stellen sie es so einfach wie

Schnellstart

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 

oder unter

Beispiele

# notice that the target git repo must already exist and its # `next` branch will be overwritten! git remote add gitcrypt gcrypt::git@example.com:repo#next git push gitcrypt master 

Versucht

Ich bevorzuge die vollständige Repository-Verschlüsselung, daher habe ich es git-remote-gcryptmit Variationen des Schnellstarts und des Beispiels versucht . Bisher habe ich versucht, ein vorhandenes Repository zu verschieben, indem ich deren Anweisungen befolge. Was ergibt das: (Hinweis: Ich habe den Benutzernamen absichtlich in geändert user)

-> mit sshwie im angegebenen Beispiel

[...]/git_test$ git remote add origin gcrypt::git@bitbucket.org:user/test.git [...]/git_test$ git push -u origin --allgcrypt: Development version -- Repository format MAY CHANGE gcrypt: Repository not found: git@bitbucket.org: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::git@bitbucket.org:user/test.git' 

oder mit https(was funktionierte)

[...]/git_test$ git remote add gitcrypt gcrypt::https://user@bitbucket.org/user/test.git [...]/git_test$ git push -u gitcrypt --allgcrypt: Development version -- Repository format MAY CHANGE Password for 'https://user@bitbucket.org':  gcrypt: Repository not found: https://user@bitbucket.org/user/test.git gcrypt: Setting up new repository Password for 'https://user@bitbucket.org':  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://user@bitbucket.org':  To gcrypt::https://user@bitbucket.org/user/test.git * [new branch] master -> master Branch master konfiguriert zum Folgen von Remote-Branch master von gitcrypt. 

Trotzdem verstehe ich nicht, wie man Benutzer hinzufügt oder einfach meine Sicherung auf einen anderen Computer zieht (da mein gpg-Schlüssel lokal generiert wurde)!? Fühlen Sie sich frei, um auf die Nutzung von zu antworten git-remote-gcrypt.

20
Diese könnten verwandt sein: - http://superuser.com/questions/676497/encrypt-files-vor-sending-them-to-cloud Der Link [filter] [3] ließ mich glauben, dass dies eine knifflige Verwendung ist einer Git-Funktionalität, die den Code (/ Inhalt) beim Drücken / Ziehen ändert. Die Ver- und Entschlüsselung erfolgt durch die mitgelieferten Skripte. Wenn dies der Fall ist, würde ich lieber einen Weg vorziehen, der einfacher zu installieren ist, ohne dass die Skripte umständlich sind - Programme wie git-remote-gcrypt. Außerdem würde dies den Inhalt des Archivs verraten, oder? gr4nt3d vor 7 Jahren 0
- http://superuser.com/questions/900656/how-to-encrypt-data-in-bitbucket-without-losing-git-diff-tools Eine ähnliche Frage, insbesondere bei bitbucket, die keine Antwort hat. gr4nt3d vor 7 Jahren 0
Schauen Sie sich https://gist.github.com/shadowhand/873637 an Nifle vor 7 Jahren 1
@Nifle scheint die Filtermethode zu sein, wie in meinem ersten Kommentar, richtig? Verschlüsselt dies das gesamte Repo oder nur den Dateiinhalt? gr4nt3d vor 7 Jahren 0
Da ich dort http://superuser.com/a/1162909/626063 hinzugefügt habe: Es genügt nicht, den Schlüssel (und den geheimen Schlüssel) zu kopieren, um das Repo auf einen anderen Computer zu kopieren. gr4nt3d vor 7 Jahren 0
Haben Sie sich [git-remote-gcrypt] (http://git-annex.branchable.com/tips/fully_encrypted_git_repositories_with_gcrypt/) oder [Keybase] (https://keybase.io/blog/encrypted-git-for- jeder) ? harrymc vor 6 Jahren 1
@ harrymc, ich habe mir gerade beide angesehen. Leider bin ich zu beschäftigt, um diese Lösungen zu testen, aber Keybase sieht aus wie ein einfaches All-in-One-Tool (wahrscheinlich unkompliziert, wenn ein ganzes Team es verwendet; allerdings habe ich keine Kompatibilität mit nur Git gesehen) und den Schritten im Git-Anhang Seite scheint ein paar Schritte zu zeigen, die ich nicht gemacht habe; so definitiv ein guter Hinweis. Vielen Dank! gr4nt3d vor 6 Jahren 0

1 Antwort auf die Frage

7
harrymc

Ein kostenloses Open Source-Tool ist Keybase :

Git unterstützt Remote-Helfer. Und wir haben eine Open Source gemacht.

Der Remote-Helfer von Keybase führt alle Kryptosignale aus, während git sein Ding erledigt. Das hört sich vielleicht beeindruckend an, aber Keybase hat git nicht von Grund auf neu implementiert. Wir bieten einen Remote-Helfer an, der auf dem hervorragenden Go-git-Projekt basiert, an dem wir mitgewirkt haben.

Wir bringen folgendes mit: (1) Krypto, (2) Schlüsselverwaltung von Team und Geräten für mehrere Geräte, (3) ein sichereres Identitätskonzept.

Es ist Ende-zu-Ende verschlüsselt. Es wird wie GitHub gehostet, aber nur Sie (und Teamkollegen) können irgendetwas davon entschlüsseln. Für Keybase ist alles nur ein Wirrwarr. Für Sie ist es ein regulärer Checkout ohne zusätzliche Schritte.

Selbst Ihre Repository-Namen und Zweignamen sind verschlüsselt und daher für Keybase-Mitarbeiter oder Infiltratoren nicht lesbar.

Teamwork wird durch Keybase-Teams unterstützt :

Ein Keybase-Team besteht aus einer namentlich genannten Gruppe von Personen mit flexibler Mitgliedschaft. Angenommen, Sie arbeiten an einem Projekt namens Treehouse. Sie können Baumhaus bei Keybase registrieren. Dieser Teamname ist universell. Es kann nur ein Keybase-Team mit einem bestimmten Namen geben.

Teams erhalten Chats und Channels. Der Chat sieht ein bisschen wie Slack oder Discord aus:

Das Keybase-Teamwork ist jedoch End-to-End-verschlüsselt, sodass Sie sich nicht um Server-Hacks kümmern müssen.

Keybase

Schönes Werkzeug da! Es scheint jedoch ein geschlossenes Ökosystem zu sein. Ich konnte keine Hinweise finden, die zeigen, wie mit Nicht-Keybase-Benutzern gearbeitet werden kann. Ist das möglich? Ich denke, dass ein ganzes Team gezwungen wird, dieses Tool zu verwenden oder davon abhängig zu sein, überwiegt die Vorteile noch. gr4nt3d vor 6 Jahren 1
Dies ist Open Source. Wäre ein von Ihnen entwickeltes Werkzeug offener? harrymc vor 6 Jahren 0
Ich bezog mich auf die Verwendung; und bin mir nicht sicher, wie die * git Remote-Helfer * tatsächlich funktionieren. Könnte man einen Schlüssel (der nicht pgp ist, aber etwas Neues ist, richtig?) Und diesen Helfer verwenden, aber ohne das GUI? gr4nt3d vor 6 Jahren 0
Ich kann diese Fragen nicht beantworten - ich bin nicht so tief darauf eingegangen. harrymc vor 6 Jahren 0