Настройка зашифрованного git-репозитория

30

ситуация

Привет, я хотел бы сохранить данные с помощью git, в зашифрованном виде (на некоторых платформах, таких как bitbucket или github ). Поэтому вопрос:

Вопрос

Я ищу различные без проблем способы:
Как настроить зашифрованный репозиторий на bitbucket (/ github)? Теперь я новичок в git, поэтому инструкция со всеми необходимыми шагами или пошаговая инструкция будет высоко ценится!

"Исследование"

git-crypt
Я нашел git-crypt , но на сайте упоминается, что он предназначен для шифрования одного файла. Если кто-то хочет зашифровать весь репозиторий, они отправляют git-remote-gcrypt .

git-remote-gcrypt
В своем README.rst они описывают это так просто, как

Быстрый старт

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

или под

Примеры

# 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

Пытается

Я предпочитаю полное шифрование репозитория, поэтому я попробовал git-remote-gcryptс вариациями Quickstart и Example . До сих пор я пытался протолкнуть существующий репозиторий, следуя их инструкциям. Что приводит к этому: (примечание: я специально изменил имя пользователя на user)

-> sshкак в приведенном примере

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

или с https(который работал)

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

Тем не менее, я не понимаю, как добавить пользователей или просто перенести мою резервную копию на другую машину (так как мой ключ gpg был сгенерирован локально) !? Не стесняйтесь просто ответить на использование git-remote-gcrypt.

gr4nt3d
источник
Они могут быть связаны: - superuser.com/questions/676497/… Предоставленная ссылка [filter] [3] заставила меня поверить, что это хитрое использование функциональности git, которая изменяет код (/ content) при push / pull. А шифрование / дешифрование выполняется с помощью предоставленных сценариев. Если это так, то я бы предпочел способ, который легче установить без этих скриптов - таких программ, как git-remote-gcrypt. Более того, это раскрыло бы содержимое хранилища, верно?
gr4nt3d
- superuser.com/questions/900656/… Подобный вопрос специально для bitbucket, на который нет ответа.
gr4nt3d
1
Взгляните на gist.github.com/shadowhand/873637
Nifle
@Nifle - это метод фильтра, как в моем первом комментарии, верно? Зашифровывает ли это весь репо или только содержимое файла?
gr4nt3d
1
Вы смотрели на git-remote-gcrypt или Keybase ?
Harrymc

Ответы:

19

Бесплатный инструмент с открытым исходным кодом - Keybase :

Git поддерживает удаленных помощников. И мы сделали с открытым исходным кодом.

Удаленный помощник Keybase выполняет все шифрование, позволяя git делать свое дело. Это может звучать впечатляюще, но Keybase не реализовал Git с нуля. Мы предоставляем удаленного помощника, работающего на основе отличного проекта go-git, которому мы начали содействовать.

Мы приводим к таблице: (1) шифрование, (2) команда + управление ключами нескольких устройств, (3) более безопасное понятие идентичности.

Он полностью зашифрован. Он размещен, как, скажем, GitHub, но только вы (и партнеры по команде) могут расшифровать любой из них. Для Keybase все - только искаженный беспорядок. Для вас это обычная проверка без лишних шагов.

Даже ваши имена репозиториев и филиалов зашифрованы и поэтому не могут быть прочитаны персоналом Keybase или злоумышленниками.

Работа в команде поддерживается командами Keybase :

Команда Keybase - это именованная группа людей с гибким членством. Допустим, вы работаете над проектом под названием Treehouse. Вы можете зарегистрировать домик на дереве на базе ключей. Это название команды универсально; может быть только одна команда Keybase с данным именем.

Команды получают чаты и каналы. Чат выглядит как Slack или Discord:

Но командная работа Keybase полностью зашифрована, что означает, что вам не нужно беспокоиться о взломах серверов.

Keybase

harrymc
источник
2
Хороший инструмент там! Тем не менее, похоже, что это закрытая экосистема. Я не смог найти никаких подсказок, показывающих, как работать с не-Keybase-пользователями. Это возможно? Я предполагаю, что принуждение всей команды к использованию этого инструмента или зависимость от него все еще перевешивает преимущества.
gr4nt3d
Это с открытым исходным кодом. Будет ли инструмент, который вы разработали, более открытым?
harrymc
Я имел в виду использование; и я не уверен, как на самом деле работают удаленные помощники git . Можно ли использовать ключ (не pgp, а что-то новое, верно?) И этот помощник, но без графического интерфейса?
gr4nt3d
Я не могу ответить на эти вопросы - я не углубился в это.
Harrymc
могут ли сторонние инструменты работать с ним?
Майки,