最近线上部署的项目出现了很多问题,经过排查发现是之前很多工程部署的机器上使用的是个人的git账号。原来维护人员调到其他项目去了,后来修改了密码,导致很多工程都出了问题。修改代码后机器更新代码一直提示输入git密码。因为本地使用的是ssh方式更新代码,所以认证失败后就只提示输入密码。在网上查了很多种方式,大部分回答都一样,修改账号密码,就像下面方式:
gitconfig--globaluser.name用户名gitconfig--globaluser.email邮箱地址
结果当然是没有一点效果了。最后查出两种修改方式
https更新代码
使用https方式更新Git库代码,这样每次都会提示输入账号和密码,只要有权限的账号都可以更新。修改方式是在git目录的.git文件夹下,打开config文件,将url从ssh修改为https方式
[remote"origin"]url=https://github.com/xxxx/xxxx.gitfetch=+refs/heads/*:refs/remotes/origin/
但是上面这种方式需要每次输入账号密码,这样不利于自动脚本执行,那么我们就需要使用免密方式更新了。
ssh更新代码
#输入用户名gitconfig--globaluser.name"yourname"#输入邮箱gitconfig--globaluser.email"youremail"#消除由于Windows和Linux拼图中换行符的差异导致的问题gitconfig--globalcore.autocrlffalse#消除由于路径或是文件名包含中文导致的乱码问题gitconfig--globalcore.quotepathoff#消除gui界面中文乱码问题,如果只使用命令行的话不用设置这个gitconfig--globalgui.encodingutf-8#配置ssh的秘钥,输完之后一路回车ssh-keygen-trsa-C"youremail"#启用ssh-agenteval`ssh-agent`#添加秘钥ssh-add~/.ssh/id_rsa#将它添加到一直的key列表中ssh-add-l#打开公钥文件,拷贝公钥,添加到自己的GitHub账户上去cat~/.ssh/id_rsa.pub