Configurando um Repositório Git Criptografado

30

Situação

Olá, gostaria de salvar dados com o git, criptografado (em alguma plataforma como o bitbucket ou o github ). Portanto, a pergunta:

Questão

Estou procurando diferentes maneiras sem complicações sobre:
Como configurar um repositório criptografado no bitbucket (/ github)? Agora, eu sou novo no git, portanto uma instrução com todas as etapas necessárias ou passo a passo seria muito apreciada!

"Pesquisa"

git-crypt
Encontrei git-crypt , mas no site é mencionado que ele se destina à criptografia de arquivo único. Se alguém quiser criptografar o repositório inteiro, encaminhará para git-remote-gcrypt .

git-remote-gcrypt
No README.rst, eles colocam isso tão simples quanto

Começo rápido

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

ou sob

Exemplos

# 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

Tentativas

Eu prefiro a criptografia completa do repositório, por isso tentei git-remote-gcryptcom variações do Início Rápido e Exemplo . Até agora, tentei empurrar um repositório existente, seguindo suas instruções. O que gera isso: (nota: alterei propositadamente o nome de usuário para user)

-> com sshcomo no exemplo fornecido

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

ou com https(que funcionou)

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

No entanto, eu não entendo como adicionar usuários ou apenas puxar meu backup para outra máquina (desde que minha chave gpg foi gerada localmente)!? Sinta-se livre para responder apenas sobre o uso de git-remote-gcrypt.

gr4nt3d
fonte
Estes podem estar relacionados: - superuser.com/questions/676497/… O link do [filter] [3] me levou a acreditar que esse é um uso complicado de uma funcionalidade git que altera o código (/ conteúdo) ao pressionar / puxar. E a criptografia / descriptografia é feita pelos scripts fornecidos. Se for esse o caso, prefiro uma maneira mais fácil de configurar sem o incômodo desses scripts - programas como o git-remote-gcrypt. Além disso, isso revelaria o conteúdo do repositório, certo?
precisa saber é o seguinte
- superuser.com/questions/900656/… Pergunta semelhante especificamente com bitbucket que não tem resposta.
precisa saber é o seguinte
1
Dê uma olhada em gist.github.com/shadowhand/873637
Nifle
@ Nifle parece ser o método de filtro como no meu primeiro comentário, certo? Isso criptografa o repositório inteiro ou apenas o conteúdo do arquivo?
gr4nt3d
1
Você já viu o git-remote-gcrypt ou o Keybase ?
harrymc

Respostas:

18

Uma ferramenta gratuita e de código aberto é o Keybase :

O Git suporta auxiliares remotos. E criamos um código aberto.

O ajudante remoto do Keybase executa toda a criptografia enquanto deixa o git fazer sua parte. Isso pode parecer impressionante, mas o Keybase não reimplementou o git do zero. Fornecemos um auxiliar remoto, desenvolvido pelo excelente projeto go-git, com o qual começamos a contribuir.

Trazemos para a mesa: (1) criptografia, (2) equipe + gerenciamento de chaves com vários dispositivos, (3) um conceito mais seguro de identidade.

É criptografado de ponta a ponta. Ele é hospedado, como, digamos, no GitHub, mas somente você (e colegas de equipe) podem descriptografar qualquer um deles. Para Keybase, tudo não passa de uma bagunça ilegível. Para você, é um checkout regular, sem etapas extras.

Até mesmo os nomes de seus repositórios e ramificações são criptografados e, portanto, ilegíveis pela equipe ou infiltrados da Keybase.

O trabalho em equipe é suportado pelas equipes Keybase :

Uma equipe Keybase é um grupo de pessoas nomeadas, com associação flexível. Digamos que você trabalhe em um projeto chamado Treehouse. Você pode registrar uma casa na árvore no Keybase. O nome da equipe é universal; pode haver apenas uma equipe do Keybase com um determinado nome.

As equipes recebem bate-papos e canais. O bate-papo se parece um pouco com Slack ou Discord:

Mas o trabalho em equipe do Keybase é criptografado de ponta a ponta, o que significa que você não precisa se preocupar com hacks de servidor.

Keybase

harrymc
fonte
2
Boa ferramenta lá! No entanto, parece ser um ecossistema fechado. Não encontrei nenhuma dica mostrando como trabalhar com usuários que não são do Keybase. Isso é possível? Acho que forçar uma equipe inteira a usar essa ferramenta ou depender dela supera os benefícios ainda.
Gr4nt3d #
Isso é de código aberto. Uma ferramenta que você desenvolveu seria mais aberta?
harrymc
Eu estava me referindo ao uso; e não tenho certeza de como os ajudantes remotos do git realmente funcionam. Alguém poderia usar uma chave (que não é pgp, mas algo novo, certo?) E esse ajudante, mas sem a GUI?
gr4nt3d
Não posso responder a essas perguntas - não fui tão profundamente nisso.
harrymc
ferramentas de terceiros podem trabalhar com ele?
Mikey 22/01