内容简介:加密git远端版本库
我打算把所有服务器的配置文件用git管理起来,这样可以记录配置变更状况。 但是有一个问题是,如何多人协作?服务器配置信息非常敏感,如果这个版本库泄漏,整个公司的服务器架构就彻底泄漏了。 这个版本库只能在开发者本地电脑里面解密,远程托管版本库的服务器不应该知道文件里面的内容。
那么解决办法就是:本地git版本库是解密的,在上传过程中内容全部加密,密钥保存在本地,同时密钥可以分享给其他开发者。
考虑了几个解决方案:
git-crypt :可以加密部分文件,原理是加上了加密的fiter和diff, 但是官方说只适合加密部分文件,而不适合全版本库加密。部分文件加密很容易造成信息泄漏,一定要全版本库加密才适合。
串联sshfs和远程服务器加密文件系统encfs:首先用sshfs加载远端文件系统,然后用encfs创建加密文件系统。 我估计无法解决多人同时push情况下的竞争条件,并且encfs有安全漏洞,使用上push/pull之前需要加载两层文件系统,不是很方便。
git-remote-gcrypt 用gpg进行远端加密。 比较符合我预期的模式,但是用gpg不是特别方便协作。但是别的方法走不通,只有这个方法可用。
使用方法
# 安装git-remote-gcrypt和gnupg sudo apt-get install git-remote-gcrypt gnupg # 创建一个gpg的key,需要设置用户名,邮箱,描述等,不要设置过期时间 gpg --gen-key # 记录一下生成的key的ID,比如2048R/A0F0B575里面的A0F0B575,2048代表加密轮数,越多越不容易破解 gpg --list-keys # 生成一个测试版本库 mkdir test1 && cd test1 git init . echo "test" > a.txt git add . && git ci -m "update" # 在你的github上面创建一个project,比如:https://github.com/halida/ttt # 配置远端加密版本库 git remote add cryptremote gcrypt::git@github.com:halida/ttt.git # 最好指定用哪个key加密,这样可以共享这个key给其他人用 git config remote.cryptremote.gcrypt-participants "A0F0B575" # push到远端 git push cryptremote master # 访问远端版本库,看看文件内容,和commit里面的信息,是不是都是加密的?
如何分享给其他人
# 导出key gpg --export-secret-key -a "share@share.com" > secretkey.asc # 把secretkey.asc分享给其他人,拷贝的时候记得先压缩加密一下再发送,更安全 # 别人电脑里面导入 gpg --import secretkey.asc # 下载代码 git clone gcrypt::git@github.com:halida/ttt.git test2 # 也要指定一下用什么key加密 git config remote.cryptremote.gcrypt-participants "A0F0B575"
用这种方法,可以用git管理一些私密又需要协作的信息(比如服务器配置), 也可以把github当作私密的版本控制系统来用(commit的消息还是明文的)。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 加密库 libsodium 1.0.17 发布,Bug 修复版本
- 加密库 libsodium 1.0.17 发布,Bug 修复版本
- 谷歌开源的加密库Tink正式发布1.2版本
- Weblogic 12版本以下服务器如何调整SSL协议和加密套件
- CAT 0.2.0 版本发布,国密 SM2 加密与解密功能如期完成
- SSL加密与分布式IM系统-InChat1.1.3版本试用说明
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rails 5敏捷开发
[美] Sam Ruby、[美] Dave Thomas、[美] David Heinemeier Hansson / 安道、叶炜、大疆Ruby技术团队 / 华中科技大学出版社 / 2017-12-30 / 115.00
本书以讲解“购书网站”案例为主线,逐步介绍Rails的内置功能。全书分为3部分,第一部分介绍Rails的安装、应用程序验证、Rails框架的体系结构,以及Ruby语言知识;第二部分用迭代方式构建应用程序,然后依据敏捷开发模式开展测试,最后用Capistrano完成部署;第三部分补充日常实用的开发知识。本书既有直观的示例,又有深入的分析,同时涵盖了Web开发各方面的知识,堪称一部内容全面而又深入浅出......一起来看看 《Rails 5敏捷开发》 这本书的介绍吧!