需求:我有一个本地的git项目imooc-dubbo
想把其添加两个remote repository,一个在码云上,一个在github上,并且都配置好ssh
是在windows下进行配置的
1. 为github配置
首先在项目目录上 执行git bash
先执行ssh -T git@github.com
参考:Testing your SSH connection
如果其直接连接不上,那么说明公钥配置不成功
那么接下来配置公钥
在.ssh文件夹下执行git bash
ssh-keygen -t rsa -C "constfafa@gmail.com"
生成两个文件,一个是id_rsa,另一个是id_rsa.pub
第一步:将pub内容设置到github中
配置好公钥后,再执行ssh -T git@github.com也该就可以连接上了
然后git remote add git@xxx.git
执行git pull命令
应该是会报错的
Permission denied(publicKey)
注意我们另外的一个生成文件还没有使用
也就是要执行第二步:配置publicKey
我们可以执行一下
ssh -vT git@github.com
来看一下具体报错的地方
参考:Error: Permission denied (publickey)
eval $(ssh-agent)
ssh-add "C:\Users\Administrator\.ssh\id_rsa"
然后再执行一下
ssh -vT git@github.com
这样就说明ssh配置成功了
但是注意:这种方式只在当前git bash session中有效
“ssh-add 这个命令不是用来永久性的记住你所使用的私钥的。实际上,它的作用只是把你指定的私钥添加到 ssh-agent 所管理的一个 session 当中。而 ssh-agent 是一个用于存储私钥的临时性的 session 服务,也就是说当你重启之后,ssh-agent 服务也就重置了。
如果是为了永久记住对应的私钥是哪个,我们不能依赖 ssh-agent 服务。”
那么如何永久性记住呢?
在.ssh下编写config文件,进行如下配置:
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee-changliang_boe
User constfafa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github-constfafa
User constfafa
其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。
以后如果有我们自己的gitlab,那么也可以在config中添加
这样我们再次通过ssh -vT git@github.com来看
2. 为码云配置
配置方式相同,只是把github换为gitee
并在config文件中执行gitee的publicKey位置