在GIT大行其道的今天,一个电脑配置两个git环境是常见的事儿:一个给公司的gitlab使用,一个给自己的github仓库使用。那么如何配置两套git的ssh环境让他们互不干扰呢?
配置过程
首先先要生成ssh秘钥,如果是给公司的gitlab使用的,命令是:
1
ssh-keygen -t rsa -C '公司发给你的邮箱地址' -f ~/.ssh/id_rsa
这里-t
代表创建的秘钥类型,这里默认就是rsa,-C
是添加注释用的,-f
就是制定对应的文件名称。
同理,再创建一个给个人github的一个ssh秘钥,命令是:
1
ssh-keygen -t rsa -C '个人的邮箱地址' -f ~/.ssh/id_rsa.github
这来命令敲完,那么应该会生成对应的4个文件:
然后把各自的秘钥的.pub
文件复制到github/公司gitlab的ssh key
认证里,我这里只贴github的:
两个.pub文件都复制粘贴到对应的地址之后,然后还要添加到了ssh-add
里,命令是:
1
2ssh-add ~/.ssh/id_dsa
ssh-add ~/.ssh/id_dsa.github
添加完毕之后,使用ssh-add -l
查看:
如果想清空这个ssh-add列表,命令是ssh-add -D
,只想删除一个,命令是ssh-add -d ~/.ssh/对应的秘钥名
。
还有最后一步,比较重要,要创建一个~/.ssh/config
文件,里面内容如下:
1
2
3
4
5
6
7
8
9
10
11
12#个人仓
Host github.com
HostName github.com # 这里跟hostname文件的效果一样的,建议跟Host写一样
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa.github # 这里就是刚才创建的那个github的秘钥
#公司仓库
Host company-gitlab
HostName gitlab.你公司域名.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
保存之后,可以尝试一下连通,ssh -T 对应的Host
,这里有一个坑,就是连通github的时候,应该是ssh -T git@github.com
,没有前面那个git@
,可能会报错Permission denied (publickey)
,因为github所有连接(包括远程URL的连接)必须以 “git” 用户进行。如图:
如果连不上的话,那么就ssh -vT 对应的Host
,看一下详细日志,具体哪一步错了,然后针对性的修改即可。
参考资料
https://lunashu.org/git-clone-ssh-key/
https://www.zhihu.com/question/21402411
https://hanpanpan200.github.io/2019/10/14/setup-multiple-git-accounts-by-ssh-config/
https://www.jianshu.com/p/90c5c863a272
https://blog.csdn.net/hao495430759/article/details/80673568
https://docs.github.com/cn/authentication/troubleshooting-ssh/error-permission-denied-publickey