在一个电脑里配置两套git环境供ssh推送

在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
2
ssh-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

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------