git配置——解决git每次pull/push都要密码的问题以及git ssh配置,原理
一.解决git每次pull/push都要密码
如果我们git clone的代码的时候用的是连接的https://而不是git@git (ssh)的形式,当我们操作git pull/push到远程的时候,总是提示我们输入账号和密码才能操作成功,频繁的输入账号和密码会很麻烦。
解决办法:
git bash进入你的项目目录,输入:
git config --global credential.helper store
然后就会提示让你输入一次用户名和密码,然后这个用户密码其实保存在本地了,下次在git pull/push的时候就不在输入了。
二.git ssh配置
上面说了git下载代码用的https://也是可以用git clone ssh://XXX
下面在说明怎么配置git ssh:
1.找一个能输入命令的终端cmd或者git bash都可以打开输入
ssh-keygen 回车
可以能出现一下的要求确定的就直接按回车就可以
2.然后出现生成ssh公钥和私钥的保存地址,id_rsa.pub是公钥,id_rsa私钥
3.去保存你地址复制公钥,打开复制
4.粘贴在gitlab(你是从gitlab下载代码),或者在github(代码在github上交互的)上面,
eg:点击gitLab自己登陆页面的setting--SSH Keys
注意:贴公钥;Title下面可以写上自己取的名字给这次添加的key,为了添加多个可以辨识(主要辨识是不同的终端,就是的不同的电脑生成的)
二.git的ssh key和原理
SSH登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在git中一般命名为id_rsa.pub, id_rsa。那么如何使用生成的一个私钥一个公钥进行验证呢?
本地生成一个密钥对,其中公钥放到远程主机,私钥保存在本地当本地主机需要登录远程主机时,本地主机向远程主机发送一个登录请求,远程收到消息后,返回一个随机生成的字符串,本地拿到该字符串,用存放在本地的私钥进行加密,再次发送到远程,远程用之前存放在远程的公钥对本地发送过来加密过的字符串进行解密,如果解密后与源字符串等同,则认证成功。
总结:就是本地与远程交互的时候,本地用私钥加密远程的传来的字符串,再返回给远程,远程用公钥解密与原字符串相同,认证成功。
特点:ssh方式单独使用非对称的秘钥进行认证和加密传输,和账号密码分离开来,不需要账号也可以访问repo。生成和管理秘钥有点繁琐,需要管理员添加成员的public key。不能进行匿名访问,ssh不利于对权限进行细分,用户必须具有通过SSH协议访问你主机的权限,才能进行下一步操作,比较适合内部项目