在我们的生活和工作中,我们常常会碰到一种情况,那就是一台电脑上需要同时使用多个 Git 账号。

比如,你可能在公司使用 Gitlab 或者 Gitee 来管理项目,而个人项目则通过 Github 进行托管。

更不用说还有云效、Gitee、码云、Coding 等各种不同的代码托管平台。 在这种情况下,你需要为每一个代码托管平台生成一个 SSH Key,并且将对应的公钥复制到相应的地方。所以,如何让这些不同的 SSH Key 在同一台电脑上和平共存,互不干扰呢? 这就是这里要分享的知识点。 对于我来说,更重要的目的是能够将公司和个人的身份区分开来。因此,接下来我会以 Github、 Gitee、阿里云云效(Codeup)为例,详细展示如何进行配置。

在不同的 Git 托管平台配置不同的公钥

在不同的 Git 托管平台下,配置不同的 SSH Key 的方法很简单,直接修改 ~/.ssh/config 配置文件即可。 比如我使用了 github.comgitee.com 这两个托管平台,然后不同的平台使用不用的秘钥,则可以这样配置:

Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/company

Host github.com
    HostName ssh.github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/person

在同一个托管平台下配置不同的秘钥

同平台下这样如何配置不同的 SSH Key 呢? 这里我拿阿里云 Code 的平台来举例。 在阿里云 Code 平台下我拥有2个账号,对应着不同的项目,一个是公司的项目,一个是我的项目。 我们都知道在同一个平台下,一个公钥只能应用在一个账号下,这时候该怎么办呢?这里我有2个账号,该如何配置呢? 解决办法还是一样,修改:~/.ssh/config 配置,加一个 Host 别名来解决,配置如下:

Host codeup.person.git
HostName codeup.aliyun.com
IdentityFile ~/.ssh/person.rsa
PreferredAuthentications publickey
IdentityAgent none
IdentitiesOnly yes

Host codeup.company.git
HostName codeup.aliyun.com
IdentityFile ~/.ssh/company.rsa
PreferredAuthentications publickey
IdentityAgent none
IdentitiesOnly yes

配置后,我们的本地的 Git 仓库里面的地址就需改变一下了。 如公司的 Git 仓库,地址则是:git://codeup.company.git/xxx/xxxx.git 个人的仓库地址则是:git://codeup.person.git/xxx/xxx.git

如何设置 Git 仓库的地址呢?找到本地 Git 仓库,编辑 .git/config 文件,修改里面 url= 部分:

[remote "origin"]
    url = git://codeup.person.git/xxx/xxx.git

SSH配置文件所在位置

MacOS/Linux: ~/.ssh/config
Windows: C:\Users\<用户名>\.ssh\config