Configurar un repositorio git encriptado

30

Situación

Hola, me gustaría guardar datos con git, encriptados (en alguna plataforma como bitbucket o github ). Por lo tanto la pregunta:

Pregunta

Estoy buscando diferentes formas sin problemas en:
¿Cómo configurar un repositorio cifrado en bitbucket (/ github)? Ahora, soy nuevo en git, por lo tanto, una instrucción con todos los pasos necesarios o paso a paso sería muy apreciada.

"Investigación"

git-crypt
Encontré git-crypt , pero en el sitio se menciona que está destinado al cifrado de un solo archivo. Si uno quisiera encriptar todo el repositorio, lo reenvía a git-remote-gcrypt .

git-remote-gcrypt
En su README. primero lo pusieron tan simple como

Inicio 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

o debajo

Ejemplos

# 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

Intentos

Prefiero el cifrado completo del repositorio, por lo tanto, probé git-remote-gcryptcon variaciones de Quickstart y Example . Hasta ahora intenté impulsar un repositorio existente siguiendo sus instrucciones. Lo que produce esto: (nota: he cambiado el nombre de usuario a propósito user)

-> con sshcomo en el ejemplo proporcionado

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

o con https(que funcionó)

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

¡Sin embargo, no entiendo cómo agregar usuarios o incluso simplemente extraer mi copia de seguridad en otra máquina (ya que mi clave gpg se generó localmente)? No dude en responder solo sobre el uso de git-remote-gcrypt.

gr4nt3d
fuente
Estos pueden estar relacionados: - superuser.com/questions/676497/… El enlace proporcionado por [filter] [3] me llevó a creer que este es un uso complicado de una funcionalidad git que cambia el código (/ contenido) al presionar / tirar. Y el cifrado / descifrado se realiza mediante los scripts proporcionados. Si ese es el caso, prefiero una forma que sea más fácil de configurar sin la molestia de esos scripts, programas como git-remote-gcrypt. Además, esto revelaría el contenido del repositorio, ¿verdad?
gr4nt3d
- superuser.com/questions/900656/... pregunta similares específicamente con bitbucket que no tiene respuesta.
gr4nt3d
1
Echa un vistazo a gist.github.com/shadowhand/873637
Nifle
@Nifle parece ser el método de filtro como en mi primer comentario, ¿verdad? ¿Esto encripta todo el repositorio o solo el contenido del archivo?
gr4nt3d
1
¿Has mirado git-remote-gcrypt o Keybase ?
harrymc

Respuestas:

19

Una herramienta gratuita y de código abierto es Keybase :

Git admite ayudantes remotos. Y hemos creado uno de código abierto.

El ayudante remoto de Keybase realiza todas las criptografías mientras deja que git haga lo suyo. Esto puede sonar impresionante, pero Keybase no ha vuelto a implementar git desde cero. Proporcionamos un ayudante remoto, impulsado por el excelente proyecto go-git, al que hemos comenzado a contribuir.

Traemos a la mesa: (1) criptografía, (2) equipo + gestión de claves multidispositivo, (3) un concepto de identidad más seguro.

Está encriptado de extremo a extremo. Está alojado, como, por ejemplo, GitHub, pero solo usted (y sus compañeros de equipo) pueden descifrarlo. Para Keybase, todo es un desastre confuso. Para ti, es un pago regular sin pasos adicionales.

Incluso los nombres de sus repositorios y sucursales están encriptados y, por lo tanto, el personal o los infiltrados de Keybase no pueden leerlos.

El trabajo en equipo es compatible a través de Keybase Teams :

Un equipo de Keybase es un grupo de personas con nombre, con membresía flexible. Digamos que trabajas en un proyecto llamado Treehouse. Puede registrar la casa del árbol en Keybase. El nombre de este equipo es universal; solo puede haber un equipo de Keybase con un nombre de pila.

Los equipos obtienen chats y canales. El chat se parece un poco a Slack o Discord:

Pero el trabajo en equipo de Keybase está encriptado de extremo a extremo, lo que significa que no tiene que preocuparse por los ataques de servidores.

Keybase

harrymc
fuente
2
Buena herramienta allí! Sin embargo, parece ser un ecosistema cerrado. No pude encontrar ninguna pista que muestre cómo trabajar con usuarios que no son de Keybase. es posible? Supongo que obligar a todo un equipo a usar esta herramienta o depender de ella supera aún más los beneficios.
gr4nt3d
Esto es de código abierto. ¿Sería una herramienta que desarrollaste más abierta?
harrymc
Me refería al uso; y no estoy seguro de cómo funcionan realmente los ayudantes remotos de git . ¿Se podría usar una clave (que no es pgp, sino algo nuevo, ¿verdad?) Y esta ayuda pero sin la interfaz gráfica de usuario?
gr4nt3d
No puedo responder estas preguntas, no lo he profundizado tanto.
harrymc
¿Pueden las herramientas de terceros trabajar con él?
Mikey