前言

当有多个 GitHub 账号时,可能需要用到多个密钥,生成多个不同的公私密钥对,用 SSH 配置文件 ( ~/.ssh/config ) 管理它们。

生成第二个密钥

ssh-keygen -t rsa -C "name@email.com" //填写你的邮箱
Enter file in which to save the key (/Users/you/.ssh/id_rsa): /c/Users/P3TERX/.ssh/id_rsa_github2 // 这里不要 Enter ,手动填写保存路径
<剩下两个直接回车>

完成之后,我们可以看到 ~/.ssh 目录下多了两个文件,变成:

id_rsa

id_ras.pub

id_rsa_github2

id_rsa_github2.pub

known_hosts

配置 config 文件

如果没有就新建

cd ~/.ssh/
touch config

添加一个主机别名配置:

Host github2
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_github2

添加完成后,测试一下:

ssh -T github2

将GitHub SSH仓库地址中的 git@github.com 替换成新建的Host别名。

如原地址是:git@github.com:abc/xyz.git,替换后应该是:github2:abc/xyz.git

如果是新建的仓库,直接使用替换后的URL克隆即可:

git clone github2:abc/xyz.git

如果已经使用原地址克隆过了,可以使用命令修改:

git remote set-url origin github2:abc/xyz.git

设置局部账户

如果之前设置过全局用户名和邮箱,那么你需要将新添加的账户管理的 repository 下设置局部用户名和邮箱。

git config user.name "yourname"
git config user.email "youremail"

否则虽然能 push ,但 push 上去会显示你之前添加的全局用户的用户名,这可能会导致不必要的麻烦。

或者 unset 全局设置,把每个 repository 分别设置局部用户名和邮箱。

git config --global --unset user.name
git config --global --unset user.email

参考

git配置多个SSH Key

在GitHub多个帐号上添加SSH公钥