【工具使用】Git密码存储相关问题探究以及资料整理

在公司的托管平台gogs上,遇到一个任务需要用不同的账号进行操作和处理。这样就遇到一个问题了,死活没有办法在拉去代码的时候,提示输入用户,输入密码。
我的操作系统是mac、安装了git环境,用的软件是sourcetree。我就开始收集资料经过了一番排查。

官方资料

那么首先肯定是git官方资料:
Git-工具-凭证存储
Git是如何存储密码的?

官方说明了git的一个密码存储配置

  1. 默认
  2. cache缓存一段时间
  3. store本地明文缓存
  4. mac系统有钥匙串
  5. window等其他系统有类似的工具。

于是我排查了我的电脑果然是使用钥匙串,也就是当我第一次输入用户名和密码进行连接的时候,系统已经默认帮我记住了该网站对应的账户和密码,之后每次都进行输入。

所以我想改成默认的配置,发现死活不生效。于是遇到了第二个问题配置的优先级的问题

git默认有三个层级的配置:项目配置、全局配置、系统配置,一级会覆盖一级。但是mac系统中系统配置默认的就是钥匙串。于是乎无解。

所以得到了初步的解决方案:1. 在钥匙串里面删除密码访问记录,所有的仓库都会重新需要你输入密码。

使用ssh拉取镜像

ssh拉去的好处之一省去输入密码的操作,这点我是很喜欢的。于是我查了基本流程

  1. 使用ssh-keygen生产对应rsa的公钥和加密的私钥。公钥要配置到服务器(账户上)私钥要添加到本地ssh连接中。
  2. 创建后通过ssh-add加入到ssh-agent(每次系统开机生效)意味着重启需要重新输入密码
  3. 使用ssh-add -K 添加到钥匙串中,不过依旧每次都得重启。
  4. 使用终端连接脚本处理,只针对终端脚本有效。
  5. 使用ssh的config进行配置,针对域名使用钥匙串进行私钥验证,以及添加映射匹配进行两者的区分。完美实现。

参考文章:
Mac sourcetree自动添加ssh key
githubsshkey配置和使用
是否必须每次添加ssh-add
Mac下git通过SSH进行免密码安全连接github

对比下拉代码的三种方式:

http、https、ssh
我就查找了下这三种分别对比的优缺点:
http对比https
ssh协议为什么安全

期间我为了测试,使用gogs对应类似github的服务器

使用docker进行安装
用docker dao 进行镜像加速
下载docker gogs镜像进行配置

添加一张gogs配置时候的截图截图

上一篇:Atitit.研发团队与公司绩效管理的原理概论的attilax总结


下一篇:I/O工作机制