这是 git-remote-gcrypt 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
git-remote-gcrypt - GNU Privacy Guard 加密的 git remote
商品描述
远程帮助程序由 git 调用来处理网络传输。 这个帮手
手柄 密码:: 将访问使用 GPG 加密的远程存储库的 URL,使用我们的
自定义格式。
支持的位置是 本地, 同步:// 和 sftp://,其中存储库存储为
一组文件,或者任何 其中 gcrypt 将在一个
git 存储库,桥接任意 git 传输。
目的是提供机密的、经过身份验证的 git 存储和协作使用
典型的不受信任的文件主机或服务。 请帮助我们评估我们满足此要求的程度
设计目标!
注意:
这是一个开发版本——存储库格式可能会改变。
快速开始
· 安装 git-remote-gcrypt 通过运行提供的 install.sh 脚本。
· 通过推送创建一个加密的遥控器:
git remote 添加 cryptremote gcrypt::rsync://example.com:repo
git push 加密远程主机
> gcrypt:设置新的存储库
> gcrypt: 远程 ID 是 :id:7VigUnLVYVtZx8oir34R
> [更多行..]
> 到 gcrypt::[...]
> * [新分支] master -> master
配置
下列 混帐配置(1) 支持变量:
偏僻的。 .gcrypt 参与者
gcrypt.参与者
空格分隔的 GPG 密钥标识符列表。 遥控器被加密到这些
参与者,并且只接受他们的签名。 GPG -k 列出所有公开
你知道的钥匙。
如果未设置此选项,我们将加密到您的默认密钥并接受任何有效的
签名。 也可以通过设置参与者显式请求此行为
至 简单.
gcrypt-参与者 远程设置优先于存储库
变量 gcrypt.参与者.
偏僻的。 .gcrypt-发布-参与者
gcrypt.publish-参与者
默认情况下,参与者的 gpg 密钥 ID 被加密使用
GPG -R. 将此选项设置为 true 禁用该安全措施。
使用的问题 GPG -R 是为了解密,gpg 会尝试每个可用的秘密
依次键,直到找到可用的键。 这可能会导致不必要的密码
提示。
偏僻的。 .gcrypt 签名密钥
用户签名密钥
(后者来自常规 git 配置)用于签名的密钥。 你应该
集 用户签名密钥 如果您的默认签名密钥不是参与者的一部分
列表。 您可以使用 per-remote 版本来使用不同的方式对不同的遥控器进行签名
键。
环境 变数
GCRYPT_FULL_REPACK
这个环境变量在推送时强制完全重新打包。
示例
如何为两个参与者设置遥控器:
git remote 添加 cryptremote gcrypt::rsync://example.com:repo
git config remote.cryptremote.gcrypt-participants“KEY1 KEY2”
git push 加密远程主机
如何使用 git 后端:
# 注意目标 git repo 必须已经存在并且它的
# `next` 分支将被覆盖!
git 远程添加 gitcrypt gcrypt::[电子邮件保护]:repo#下一个
git push gitcrypt 大师
URL 片段 (#下一个 此处)指示使用哪个后端分支。
附注
合作
每次推送都会更新清单的加密以匹配参与者
配置。 每个推送用户必须拥有所有协作者的公钥和
正确的参与者配置。
依赖
rsync的 和 卷曲 用于遥控器 同步: 和 sftp: 分别。 主要可执行文件
需要一个支持 POSIX 的 shell 本地.
GNU 隐私政策 守卫
支持 GPG 1.4 和 2。 您需要一个个人 GPG 密钥。 GPG配置
适用于公钥加密、对称加密和
签署。 看 男子 GPG 获取更多信息.
远程 ID
远程 ID 不是秘密; 它只确保由签名的两个存储库
可以区分同一用户。 如果远程 ID 更改,您将看到警告,
只有在重新创建遥控器时才会发生这种情况。
存储库 格式
加密签名(X): 签名并加密给 GPG 密钥持有者
加密(K,X): 使用对称密钥算法加密
哈希(X): SHA-2/256
B: 分行名单
L: 哈希列表(Hi) 和键 (Ki) 对于每个包文件
R: 远端ID
要编写存储库:
存储每个包文件 P as 加密(Ki, P) → P' 在文件名中 Hi
哪里 Ki 是一个新的随机字符串并且 哈希(P') → Hi
线上商城 EncSign(B) || L || R) 在清单中
要读取存储库:
使用 GPG 密钥环获取清单、解密和验证 → (B, L, R)
警告如果 R 与之前看到的远程 ID 不匹配
每 嗨, Ki in L:
获取文件 Hi 从服务器 → P'
确认 哈希(P') 火柴 Hi
解码 P' 运用 Ki → P 然后打开 P 用 git
舱单 文件
示例清单文件(为简洁起见,省略号):
$ gpg -d 91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a
542051c7cd152644e4995bda63cc3ddffd635958 refs/heads/next
3c9e76484c7596eff70b21cbe58408b2774bedad refs/heads/master
pack :SHA256:f2ad50316...cd4ba67092dc4 z8YoAnFpMlW...3PkI2mND49P1qm
pack :SHA256:a6e17bb4c...426492f379584 82+k2cbiUn7...dgXfyX6wXGpvVa
keep :SHA256:f2ad50316...cd4ba67092dc4 1
回购:id:OYiSleGirtLubEVqJpFF
每个项目都扩展到换行符,并匹配以下之一:
Git 对象 ID 及其引用
收拾 : :
包文件哈希(Hi) 和相应的对称密钥 (Ki).
保持 : :
Packfile 哈希及其重新打包生成
回购
远程标识
分机 ...
扩展字段,保留但未使用。
检测 密码 回购
要检测 git url 是否是 gcrypt 存储库,请使用: git-remote-gcrypt --check url Exit status if
0 如果 repo 存在并且可以解密,1 如果 repo 使用 gcrypt 但无法解密
解密,如果 repo 未使用 gcrypt 加密(或无法访问),则为 100。
请注意,这必须将 repo 内容提取到本地 git 存储库中,与
使用 gcrypt 存储库时完成。
使用 onworks.net 服务在线使用 git-remote-gcrypt