设置加密的git仓库


30

情况

嗨,我想用git保存数据,并加密(在某些平台上,如bitbucketgithub)。因此,问题是:

我正在寻找不同的轻松方式:
如何在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使用QuickstartExample的变体。到目前为止,我已经按照他们的指示尝试推送现有的存储库。结果如下:(注意:我故意将用户名更改为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


这些可能相关:-superuser.com/questions/676497/…提供的[filter] [3] s链接使我相信,这是git功能的棘手用法,该功能会在推/拉时更改代码(/内容)。加密/解密由提供的脚本完成。如果真是这样,那么我宁愿使用一种无​​需麻烦的脚本即可更容易设置的方法-像git-remote-gcrypt之类的程序。此外,这将揭示存储库的内容,对不对?
gr4nt3d

- superuser.com/questions/900656/...类似的问题,特别是与一直无人接听到位桶。
gr4nt3d


@Nifle似乎是我的第一条评论中的filter方法,对吗?这会加密整个存储库还是仅加密文件内容?
gr4nt3d

1
您是否看过git-remote-gcryptKeybase
harrymc '17

Answers:


18

一个免费的开源工具是 Keybase

Git支持远程助手。我们已经制作了一个开源的。

Keybase的远程助手在执行git的同时执行所有加密。这听起来可能令人印象深刻,但是Keybase并没有从头开始重新实现git。我们提供了一个出色的go-git项目提供支持的远程帮助程序,我们已开始对此做出贡献。

我们来讨论一下:(1)加密,(2)团队+多设备密钥管理,(3)更安全的身份概念。

它是端到端加密的。它是托管的,例如GitHub,但是只有您(和队友)才能解密其中的任何一个。对于Keybase来说,一切都只是乱七八糟。对您来说,这是常规结帐,没有其他步骤。

甚至您的存储库名称和分支名称也已加密,因此Keybase员工或渗透者无法读取。

通过Keybase团队支持团队合作 :

Keybase团队是具名的人员,具有灵活的成员资格。假设您从事一个名为Treehouse的项目。您可以在Keybase上注册树屋。这个团队的名字是通用的。一个给定名称的Keybase团队只能有一个。

团队获得聊天和频道。聊天看起来有点像Slack或Discord:

但是Keybase团队是经过端到端加密的,这意味着您不必担心服务器被黑客入侵。

键库


2
那里的好工具!但是,这似乎是一个封闭的生态系统。我找不到任何提示,说明如何与非Keybase用户一起使用。这可能吗?我猜想强迫整个团队使用此工具或依赖它仍然超过收益。
gr4nt3d

这是开源的。您开发的工具会更开放吗?
harrymc '17

我指的是用法。并且不确定git远程助手的实际工作方式。可以使用一个键(不是pgp,而是新的键,对吗?)和这个帮助程序而没有gui?
gr4nt3d

我无法回答这些问题-我还没有深入探讨。
harrymc '17

第三方工具可以使用吗?
Mikey
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.