在git客户端使用git-九游平台
git-crypt简介
git-crypt是一款第三方开源软件,可以用于对git仓库中的文件进行透明化的加密和解密。git-crypt可对指定文件、指定文件类型等进行加密存储。开发者可以将加密文件(如机密信息或敏感数据)与可共享的代码存储在同一个仓库中,并且该仓库可以同普通仓库一样被拉取和推送,只有持对应文件密钥的人才能查看到加密文件的内容,但不会限制参与者对非加密文件读写。
在windows中使用密钥对方式进行加密、解密
- ,下载,把下载到的exe文件放到git安装目录下的“cmd”文件夹中。
- 执行如下命令,在本地生成密钥对。
- 打开“git bash”,并进入本地代码仓库。
- 执行如下命令,在git代码仓库中创建“.git-crypt”文件夹,文件夹包含加密文件所需的密钥和配置文件。
git-crypt init
- 执行如下命令,把密钥文件导出到c:/test目录并命名为keyfile。
git-crypt export-key /c/test/keyfile
- 执行完上述步骤,用户可以到密钥导出的文件路径进行验证,确认是否已成功生成密钥。持有这个密钥文件的计算机,可以解密对应的加密文件。
- 执行如下命令,为代码仓库配置加密范围。
- 在仓库的根目录下新建一个名为“.gitattributes”的文件。
- 打开“.gitattributes”文件,设置加密范围,语法如下。
文件名或文件范围 filter=git-crypt diff=git-crypt
下面给出四个示例。ft/file01.txt filter=git-crypt diff=git-crypt #将特定文件加密,这里加密的是ft文件夹下的file01.txt *.java filter=git-crypt diff=git-crypt #将 .java类型文件加密 g* filter=git-crypt diff=git-crypt #将 文件名为 g 开头的文件加密 fortest/** filter=git-crypt diff=git-crypt #将 fortest 文件夹下的文件加密
- 如果创建.gitattributes文件时提示“必须键入文件名”,可以将文件名填写成 “.gitattributes.”即可创建成功,如果使用linux指令创建文件,则不会出现此问题。
- 注意不要将.gitattributes保存成txt文件,否则配置会无效。
- 进行文件加密。
在仓库根目录打开git bash,执行如下指令即可完成加密,加密后可看到目前文件的加密状态。
git-crypt status
加密执行后,在用户的本地仓库仍能明文方式打开和编辑这些加密文件,这是因为用户本地仓库有密钥存在。
这时用户可以使用add 、commit、push组合将仓库推送到代码托管仓库,此时加密文件将一同被推送。
加密文件在代码托管仓库中将以加密二进制方式存储,无法直接查看。如果没有密钥,就算将其下载到本地,也无法解密。
“git-crypt status”只会加密本次待提交的文件,对本次未发生修改的历史文件不会产生加密作用,git会对此设定涉及的未加密文件做出提示(见上图中的warning),如果想将仓库中的对应类型文件全部加密,请使用“git-crypt status -f”。
在让团队合作中 -f (强制执行)具有一定的风险,请谨慎使用。
- 进行文件解密。
- 确认本机器git安装路径下存在git-crypt文件。
- 将仓库从代码托管克隆到本地。
- 获取加密此仓库的密钥文件,并存储于本地计算机。
- 进入仓库目录,右键打开git bash。
- 执行解密指令,执行后无回显,则为执行成功。
git-crypt unlock /c/test/keyfile #请将 /c/test/keyfile 更换为用户实际的密钥存储路径
- 确认本机器git安装路径下存在git-crypt文件。
在windows中使用gpg方式进行加密、解密
- 安装并初始化git。
- 下载最新基于,将下载到的exe文件放到git安装目录下的“cmd”文件夹中,下图以“windows server 2012 r2 标准版 64”的默认git bash安路径为例。
- 最新版本,当提示用户捐赠此开源软件时,选“0”,即可跳过捐赠环节。
双击进行安装,单击“下一步”,即可完成安装。
- 使用gpg方式生成密钥对。
- 任意位置打开git bash,执行如下指令。
gpg --gen-key
- 根据提示,输入名称、邮箱。
- 确认无误后,按提示输入 “o”,并回车,此时会弹出输入密码窗口和确认密码窗口。
密码可以为空,出于信息安全考虑,建议设置新的密码。
- 显示如下图返回内容,则为gpg密钥对生成成功。
- 任意位置打开git bash,执行如下指令。
- 进行仓库加密初始化设置。
- 仓库根目录打开git bash,执行如下指令进行初始化。
git-crypt init
- 将密钥副本添加到用户的仓库,该副本已使用用户的公共gpg密钥加密,指令如下。
git-crypt add-gpg-user user_id
此处的“user_id”可以是生成此密钥时的名称(①)、邮箱(②)或指纹(③)这三种是可以唯一标识此密钥的凭证。
执行后会提示用户创建了.git-crypt文件夹以及其中的两个文件。
- 仓库根目录打开git bash,执行如下指令进行初始化。
- 为仓库配置加密范围。
- 进入仓库下的.git-crypt文件夹。
- 打开.gitattributes文件,设置加密范围,语法如下。
文件名或文件范围 filter=git-crypt diff=git-crypt
下面给出四个示例。ft/file01.txt filter=git-crypt diff=git-crypt #将 特定文件加密,这里加密的是ft文件夹下的file01.txt *.java filter=git-crypt diff=git-crypt #将 .java类型文件加密 g* filter=git-crypt diff=git-crypt #将 文件名为 g 开头的文件加密 fortest/** filter=git-crypt diff=git-crypt #将 fortest 文件夹下的文件加密
- 将.gitattributes文件复制到仓库的根目录下。
- 进行文件加密。
仓库根目录打开git bash,执行如下指令即可完成加密,并会看到目前文件的加密状态。
git-crypt status
加密执行后,在用户的本地仓库仍能明文方式打开和编辑这些加密文件,这是因为用户本地仓库有密钥存在。
这时用户可以使用add 、commit、push组合将仓库推送到代码托管仓库,此时加密文件将一同被推送。
加密文件在代码托管仓库中将以加密二进制方式存储,无法直接查看。如果没有密钥,就算将其下载到本地,也无法解密。
“git-crypt status”只会加密本次待提交的文件,对本次未发生修改的历史文件不会产生加密作用,git会对此设定涉及的未加密文件做出提示(见上图中的warning),如果想将仓库中的对应类型文件全部加密,请使用“git-crypt status -f”。
在让团队合作中 -f (强制执行)具有一定的风险,可能会对九游平台的合作伙伴的工作产生不变,请谨慎使用。
- 将密钥导出。
- 列出当前可见密钥,可以看到每个密钥的名称、邮箱、指纹信息。
gpg --list-keys
- 使用gpg --export-secret-key指令导出密钥,本示例中将名称为“gpgtest”的密钥导出到“c盘”,并命名为“key”。
gpg --export-secret-key -a gpgtest > /c/key
执行时会提示用户输入此次密码,正确输入即可。
执行后无回显,到对应目录(本示例中为c盘)可看到密钥文件。
- 将生成的密钥发送给团队内需要共享秘密文件的伙伴。
- 列出当前可见密钥,可以看到每个密钥的名称、邮箱、指纹信息。
- 将密钥导入并解密文件。
- 想要在另一台机器解密文件,首先也需要基于git,下载安装git-crypt、gpg。
- 将对应仓库clone到本地。
- 取得对应加密文件的密钥,密钥的导出请参见步骤8,本示例中将取得的密钥放在c盘。
- 进入仓库,打开git bash使用import指令导入密钥。导入时会提示用户输入密钥的密码。
gpg --import /c/key
- 使用unlock指令,解密文件。
git-crypt unlock
解锁时会弹窗提示用户输入此密钥的密码,正确输入后无回显,则为解锁成功。
- 解密完成后,查看文件可以看到文件内容已经不是加密状态。
git-crypt加密在团队合作中的应用
很多时候,团队需要在代码仓库中存储限制公开的文件,这时可以优先考虑使用“codearts repo” “git” “git-crypt”的组合,来实现部分文件在仓库分布式开源中的加密。
通常,直接使用密钥对方式的加密就能满足限制部分文件访问的需要。
当团队需要将加密文件设置不同的秘密级别时,可以使用gpg方式加密,这种方式支持用户对同一个仓库的不同文件使用不同的密钥加密,将不同密级的密钥分别随仓库共享给组织内的伙伴,即可实现文件的定向分级限制访问。
linux、mac平台的git-crypt、gpg安装
linux平台安装git-crypt、gpg
- linux安装依赖环境。
software
debian/ubuntu package
rhel/centos package
make
make
make
a c 11 compiler (e.g. gcc 4.9 )
g
gcc-c
openssl development files
libssl-dev
openssl-devel
- linux环境下,使用源码编译方式安装git-crypt。
make make install
安装到指定目录。
make install prefix=/usr/local
- linux环境下,使用源码编译方式安装gpg。
./configure make make install
- 使用debian包安装git-crypt。
debian打包可以在项目git仓库的“debian”分支中找到。
软件包是用“git-buildpackage”构建的,如下所示。
git checkout debian git-buildpackage -uc -us
- debian环境下使用构建包安装gpg。
sudo apt-get install gnupg
mac平台安装git-crypt、gpg
- macos上安装git-crypt。
使用 brew 软件包管理器,只需运行如下命令。
brew install git-crypt
- macos上安装gpg。
使用 brew 软件包管理器,只需运行如下命令。
brew install gpg
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨