在远程代码仓库上面下载代码的时候,有两种方式:一个是ssh,一个是https
这两种方式在push 代码的时候是有不同的,最主要在于他们两者的安全机制不同
ssh :采用rsa的非对称加密的方式,我们本地保存一份私钥,然后将对应的公钥放到对应的自己的账户里面
https:则是通过普通的账号来进行登录,因此如果采用http的方式,则会每次都要求输入密码
下面我们分别介绍下这两种代码下载方式,以及介绍下https方式下不用每次输入密码的方式:
一、ssh 的方式
在进行push前,我们本机是需要创建对应的公钥和私钥的
1. 查看公私钥
在终端输入:
cd /.sshcd /.ssh ls -l
查看下是否有 id_rsa 和id_rsa.pub 两个文件,其中id_rsa是私钥,id_rsa.pub是公钥,如果本地已经有自定义的id_rsa和对应的id_rsa.pub也是可以的
2. 创建公私钥
如果不存在对应的私钥和公钥文件,那么我们可以创建一个,存在,则跳过
$ ssh-keygen -t rsa -C “your_email@example.com”
参数:
-t (type)采用的算法
-C (Comment) 新的注释
-f (file) 文件名
用如上的这种方式可以创建一个对应账号的公钥和私钥
运行以上命令,会出现如下:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/zhouzhenyong/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
文件名和密码都可以不用输入,直接回车,这样可以生成默认的公钥和私钥文件,如果我们想在一台电脑上共存多个公私钥用于不同的账号域,那么可以用输入对应的公私钥文件名:
比如:
Enter file in which to save the key (/Users/zhouzhenyong/.ssh/id_rsa): second
这样就会生成:私钥 second 和公钥second.pub
注意:
1.需要自行添加私钥
如果使用自定义的文件名,那么默认情况下系统是不会识别公私钥的这个文件名的,需要添加进去,执行
$ ssh-add yourFile
例如如上文件:
ssh-add second
查看已经自定义的公私钥文件名(默认的不显示)
$ ssh-add -l
2.电脑重启私钥绑定消失(个人遇到的)
电脑重启,那么ssh-add 的私钥就会失效,需要手动重新添加一次
3.将公钥放到对应的仓库账户中
这一步我们将对应的公钥内容放到对应的仓库账户中,我们可以打开文件拷贝,也可以用命令进行拷贝公钥数据,在不同的系统中,这个命令是不同的
mac下:
pbcopy < ~/.ssh/id_rsa.pub
linux 下:
xsel < ~/.ssh/id_rsa.pub
windows 下:
clip < ~/.ssh/id_ras.pub
二、https 的方式
采用https 的提交代码,每次push代码都需要输入用户名和密码,我们这里主要介绍下,如何让https这种方式不用每次提交都需要输入用户名和密码
这里有两种方式:
1.显示的在url上面添加上用户名和密码
http://xxxxx/xxxx.Git 修改为:http://username:password@xxxxx/xxxx.git
也就是在//后面添加username:password@
如果采用sourceTree,则修改如下,但是这里有安全风险,请谨慎选择
2.git上面使用凭据帮手
第一种方式有密码泄露风险,我们可以采用下面这种方式
执行如下命令即可
git config –global credential.helper osxkeychain
后面Push的时候,会弹出如下的显示框
点击“始终允许”,以后每次提交代码就不需要输入密码了