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

5703
gr4nt3d

ситуация

Я хотел бы сохранить данные с помощью 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.

20
Это может быть связано: - http://superuser.com/questions/676497/encrypt-files-before-sending-them-to-cloud Предоставленная ссылка [filter] [3] подтолкнула меня к мысли, что это хитрое использование функциональности git, которая изменяет код (/ content) при push / pull. А шифрование / дешифрование выполняется с помощью предоставленных сценариев. Если это так, то я бы предпочел способ, который легче установить без этих скриптов - таких программ, как git-remote-gcrypt. Более того, это раскрыло бы содержимое хранилища, верно? gr4nt3d 7 лет назад 0
- http://superuser.com/questions/900656/how-to-encrypt-data-in-bitbucket-without-losing-git-diff-tools Подобный вопрос, в частности, с битбакетом, на который нет ответа. gr4nt3d 7 лет назад 0
Взгляните на https://gist.github.com/shadowhand/873637 Nifle 7 лет назад 1
@Nifle - это метод фильтра, как в моем первом комментарии, верно? Зашифровывает ли это весь репо или только содержимое файла? gr4nt3d 7 лет назад 0
Как я там добавил, http://superuser.com/a/1162909/626063: простого копирования ключа (и секретного ключа) недостаточно для клонирования репо на другую машину. gr4nt3d 7 лет назад 0
Вы смотрели на [git-remote-gcrypt] (http://git-annex.branchable.com/tips/fully_encrypted_git_repositories_with_gcrypt/) или [Keybase] (https://keybase.io/blog/encrypted-git-for- каждый) ? harrymc 6 лет назад 1
@harrymc, я только что посмотрел на оба. К сожалению, я слишком занят, чтобы протестировать эти решения, но Keybase выглядит как простой инструмент «все в одном» (вероятно, без проблем, если его использует целая команда; хотя я не видел совместимости только с git) и шаги в приложении git страница, кажется, показывает несколько шагов, которые я не сделал; так определенно хороший намек. Спасибо! gr4nt3d 6 лет назад 0

1 ответ на вопрос

7
harrymc

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

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

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

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

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

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

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

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

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

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

Keybase

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

Похожие вопросы