Einrichten eines verschlüsselten Git-Repository

30

Lage

Hallo, ich möchte Daten mit git verschlüsselt speichern (auf manchen Plattformen wie bitbucket oder github ). Daher die Frage:

Frage

Ich suche nach verschiedenen problemlosen Möglichkeiten:
Wie richte ich ein verschlüsseltes Repository auf bitbucket (/ github) ein? Jetzt bin ich neu in git, daher wäre eine Anleitung mit allen notwendigen Schritten oder Schritt für Schritt sehr willkommen!

"Forschung"

git-crypt
Ich habe git-crypt gefunden , aber auf der Website wird erwähnt, dass es für die Verschlüsselung einzelner Dateien vorgesehen ist. Wenn man das gesamte Repository verschlüsseln möchte, leitet man es an git-remote-gcrypt weiter .

git-remote-gcrypt
In ihrer README.rst setzen 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::[email protected]:repo#next
git push gitcrypt master

Versucht

Ich bevorzuge die vollständige Repository-Verschlüsselung, daher habe ich es git-remote-gcryptmit Variationen von Quickstart und Example versucht . Bisher habe ich versucht, ein vorhandenes Repository zu pushen, indem ich deren Anweisungen gefolgt bin. Das ergibt folgendes: (Hinweis: Ich habe den Benutzernamen absichtlich in geändert. user)

-> mit sshwie im vorgestellten Beispiel

[...]/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'

oder mit https(was hat funktioniert)

[...]/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.

Trotzdem verstehe ich nicht, wie ich Benutzer hinzufügen oder mein Backup einfach auf einen anderen Computer ziehen kann (da mein gpg-Schlüssel lokal generiert wurde)!? Fühlen Sie sich frei, nur bei Verwendung von zu antworten git-remote-gcrypt.

gr4nt3d
quelle
Dies könnte in Zusammenhang stehen: - superuser.com/questions/676497/… Der bereitgestellte Link [filter] [3] hat mich zu der Annahme veranlasst, dass dies eine schwierige Verwendung einer Git-Funktionalität ist, die den Code (/ content) beim Drücken / Ziehen ändert. Die Ver- und Entschlüsselung erfolgt über die bereitgestellten Skripte. Wenn dies der Fall ist, würde ich lieber eine Methode bevorzugen, die einfacher einzurichten ist, ohne dass diese Skripte lästig sind - Programme wie git-remote-gcrypt. Darüber hinaus würde dies den Inhalt des Repository aufdecken, oder?
Gr4nt3d
- superuser.com/questions/900656/… Ähnliche Frage speziell mit bitbucket, die keine Antwort hat.
Gr4nt3d
1
Werfen
Nifle
@Nifle scheint die Filtermethode zu sein wie in meinem ersten Kommentar, oder? Verschlüsselt dies das gesamte Repo oder nur den Dateiinhalt?
gr4nt3d
1
Hast du dir git-remote-gcrypt oder Keybase angesehen ?
Harrymc

Antworten:

18

Ein kostenloses Open-Source-Tool ist Keybase :

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

Der Remote-Helfer von Keybase führt die gesamte Kryptografie aus, während der Git seine Sache erledigt. Das mag beeindruckend klingen, aber Keybase hat git nicht von Grund auf neu implementiert. Wir stellen einen Remote-Helfer bereit, der von dem ausgezeichneten Go-Git-Projekt angetrieben wird, zu dem wir bereits einen Beitrag geleistet haben.

Wir bringen Folgendes auf den Tisch: (1) Krypto, (2) Team- und Schlüsselverwaltung mit mehreren Geräten, (3) ein sichereres Identitätskonzept.

Es ist durchgehend verschlüsselt. Es wird beispielsweise von GitHub gehostet, aber nur Sie (und Ihre Teamkollegen) können etwas davon entschlüsseln. Für Keybase ist alles außer einem verstümmelten Durcheinander. Für Sie ist es eine regelmäßige Kasse ohne zusätzliche Schritte.

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

Teamwork wird über Keybase-Teams unterstützt :

Ein Keybase-Team ist eine benannte Gruppe von Personen mit flexibler Mitgliedschaft. Angenommen, Sie arbeiten an einem Projekt namens Treehouse. Sie können Baumhaus auf 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:

Keybase Teamwork ist jedoch durchgängig verschlüsselt, sodass Sie sich nicht um Server-Hacks kümmern müssen.

Keybase

Harrymc
quelle
2
Schönes Werkzeug da! Es scheint jedoch ein geschlossenes Ökosystem zu sein. Ich konnte keine Hinweise finden, wie ich mit Nicht-Keybase-Benutzern arbeiten soll. Ist das möglich? Ich schätze, ein ganzes Team dazu zu zwingen, dieses Tool zu verwenden oder davon abhängig zu sein, überwiegt die Vorteile noch immer.
gr4nt3d,
Das ist Open Source. Wäre ein von Ihnen entwickeltes Tool offener?
Harrymc
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, sondern etwas Neues, oder?) Und diesen Helfer aber ohne die GUI benutzen?
Gr4nt3d
Ich kann diese Fragen nicht beantworten - ich habe mich nicht so eingehend damit befasst.
Harrymc
Können Tools von Drittanbietern damit arbeiten?
Mikey