Konfigurowanie zaszyfrowanego repozytorium git

30

Sytuacja

Cześć, chciałbym zapisać dane za pomocą git, zaszyfrowane (na niektórych platformach, takich jak bitbucket lub github ). Dlatego pytanie:

Pytanie

Szukam różnych bezproblemowych sposobów:
Jak skonfigurować szyfrowane repozytorium na bitbucket (/ github)? Teraz jestem nowy w git, dlatego instrukcja z wszystkimi niezbędnymi krokami lub krok po kroku byłaby mile widziana!

"Badania"

git-crypt
Znalazłem git-crypt , ale na stronie wspomniano, że jest przeznaczony do szyfrowania pojedynczego pliku. Jeśli ktoś chce zaszyfrować całe repozytorium, przekazuje je do git-remote-gcrypt .

git-remote-gcrypt
W pliku README.rst są tak proste, jak

Szybki start

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

lub poniżej

Przykłady

# 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

Próbuje

Wolę szyfrowanie pełnego repozytorium, dlatego próbowałem git-remote-gcryptz odmianami Szybki start i Przykład . Do tej pory próbowałem wypchnąć istniejące repozytorium, postępując zgodnie z ich instrukcjami. Co daje to: (uwaga: celowo zmieniłem nazwę użytkownika na user)

-> z sshjak w podanym przykładzie

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

lub z https(który działał)

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

Niemniej jednak nie rozumiem, jak dodawać użytkowników, a nawet po prostu ciągnąć moją kopię zapasową na inną maszynę (ponieważ mój klucz gpg został wygenerowany lokalnie)!? Nie wahaj się odpowiedzieć tylko na użycie git-remote-gcrypt.

gr4nt3d
źródło
Mogą być one powiązane: - superuser.com/questions/676497/... Podany link [filtr] [3] doprowadził mnie do przekonania, że ​​jest to trudne użycie funkcji git, która zmienia kod (/ treść) po push / pull. A szyfrowanie / deszyfrowanie odbywa się za pomocą dostarczonych skryptów. W takim przypadku wolałbym łatwiejszy sposób konfiguracji bez kłopotów ze skryptami - programy takie jak git-remote-gcrypt. Co więcej, ujawniłoby to zawartość repozytorium, prawda?
gr4nt3d
- superuser.com/questions/900656/... Podobne pytanie, szczególnie w przypadku bitbucket, na które nie ma odpowiedzi.
gr4nt3d
@Nifle wydaje się być metodą filtrowania, tak jak w moim pierwszym komentarzu, prawda? Czy to szyfruje całe repozytorium czy tylko zawartość pliku?
gr4nt3d,

Odpowiedzi:

18

Bezpłatne narzędzie typu open source to Baza kluczy :

Git obsługuje zdalnych pomocników. I stworzyliśmy wersję open source.

Zdalny pomocnik Keybase wykonuje wszystkie kryptowaluty, pozwalając gitowi robić swoje. To może brzmieć imponująco, ale Keybase nie wdrożył git od zera. Zapewniamy zdalnego pomocnika, wspieranego przez doskonały projekt go-git, do którego zaczęliśmy się przyczyniać.

Przynosimy do stołu: (1) krypto, (2) zespół + zarządzanie kluczami na wielu urządzeniach, (3) bezpieczniejsza koncepcja tożsamości.

Jest szyfrowany kompleksowo. Jest hostowany, jak powiedzmy GitHub, ale tylko Ty (i członkowie drużyny) możesz odszyfrować dowolny z nich. Dla Keybase wszystko jest tylko zniekształconym bałaganem. Dla Ciebie jest to zwykła kasa bez dodatkowych kroków.

Nawet nazwy repozytoriów i nazwy oddziałów są szyfrowane, a zatem nieczytelne dla pracowników Keybase lub infiltratorów.

Praca zespołowa jest wspierana przez zespoły Keybase :

Zespół Keybase to nazwana grupa osób z elastycznym członkostwem. Powiedzmy, że pracujesz nad projektem o nazwie Treehouse. Możesz zarejestrować domek na drzewie w Bazie kluczy. Ta nazwa zespołu jest uniwersalna; może istnieć tylko jeden zespół Keybase o danym imieniu.

Zespoły otrzymują czaty i kanały. Czat wygląda trochę jak Slack lub Discord:

Ale praca zespołowa Keybase jest szyfrowana od końca do końca, co oznacza, że ​​nie musisz się martwić o włamania na serwer.

Baza kluczy

harrymc
źródło
2
Ładne narzędzie! Wydaje się jednak, że jest to zamknięty ekosystem. Nie mogłem znaleźć żadnych wskazówek pokazujących, jak pracować z użytkownikami spoza Keybase. czy to możliwe? Wydaje mi się, że zmuszanie całego zespołu do korzystania z tego narzędzia lub bycie od niego zależnym wciąż przewyższa korzyści.
gr4nt3d
To jest open source. Czy opracowane przez Ciebie narzędzie byłoby bardziej otwarte?
harrymc
Miałem na myśli użycie; i nie jestem pewien, jak faktycznie działają zdalni pomocnicy git . Czy można użyć klucza (który nie jest pgp, ale coś nowego, prawda?) I tego pomocnika, ale bez GUI?
gr4nt3d
Nie potrafię odpowiedzieć na te pytania - nie wdałem się w to tak głęboko.
harrymc
czy narzędzia innych firm mogą z tym współpracować?
Mikey