平时自己会用到github来管理自己的一些项目,同时公司也在用gitlab做版本管理,那么如何在一台电脑上同时连接gitlab和github呢?下面展示一下配置的步骤
1. 分别生成gitlab和github的ssh key
ssh-keygen -t rsa -C "your.email@example.com" -b 4096复制代码
生成第一个gitlab的ssh key一路回车即可,生成第二个github的ssh key需注意一下ssh key的名字需要修改一下,否则就会覆盖前面生成的gitlab的key,这里我修改成id_rsa_github
这时候可以看到~/.ssh/目录下生成了以下文件- id_rsa- id_rsa.pub - id_rsa_github- id_rsa_github.pub复制代码
2. 分别复制公钥中的内容,在gitlab和github中添加ssh key
cat ~/.ssh/id_rsa.pub复制代码
3. 添加config文件
在.ssh/目录下新建一个config文件
vim config复制代码
添加配置,内容为
# gitlabHost gitlab User git HostName gitlab.cheanjiait.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa# githubHost github User git HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_github复制代码
4.测试连接
$ ssh -T gitlabWelcome to GitLab, Ethan Chen!复制代码
$ ssh -T githubHi azumia! You've successfully authenticated, but GitHub does not provide shell access.复制代码
如果出现以上内容,则代表连接已经成功了,接下来就可以愉快的搞git了
注意事项
在使用github时,在项目下初始化git的时候记得定义好user.name和user.email
git config --local user.name 'aaa'git config --local user.email 'aaa@qq.com'复制代码
如果测试连接失败,Permission denied (publickey).原因是们自定义了 id_rsa_github 钥匙名,默认情况下,连接会搜索 id_rsa 钥匙名,所以这里会失败
可以通过以下操作了解连接失败的具体原因
ssh -T -v git@github.com 复制代码
针对这个问题的解决方案如下
开启ssh-agent
# 开启 agenteval $(ssh-agent -s) ←┘Agent pid 8428复制代码
# 添加 钥匙名ssh-add ~/.ssh/id_rsa_github ←┘Identity added: /c/Users/user/.ssh/id_rsa_github (/c/Users/user/.ssh/id_rsa_github)复制代码
# 查看 agent listssh-add -l ←┘8428 SHA256:A9UcJMadwTpF7TvsT5LEXsSssTs5qehmV9Q2Q8Ntw3o /c/Users/user/.ssh/id_rsa_github (RSA)复制代码
# 不用时可以关闭 agenteval $(ssh-agent -k) ←┘Agent pid 8428 killed复制代码
如果初始化仓库的时候报以下错误
ssh: Could not resolve hostname https: nodename nor servname provided, or not knownfatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.复制代码
则查看一下自己的git的配置
$ git remote -v复制代码
将git地址由ssh方式改为https方式即可
参考文档: