github同一台电脑支持两个或以上的ssh账户(macos或Linux系统),解决Key is already in use问题

你电脑的系统是macos或Linux,你有两个github的账户:github-a 和 github-b。你当前用的是github-a,ssh-key的公钥名称是id_ed25519.pub。此时你需要使用一个新的github-b账户,当你在github-b的后台添加id_ed25519.pub时,会看到Key is already in use的错误提示,原因是github不允许同一个ssh key 公钥被多个账户使用。

那能不能在一个电脑里同时使用github-a和github-b两个账户,不需要去配置git origin,丝滑使用git命令呢?答案是当然可以的。

步骤一 创建一个新的ssh key

既然github的ssh key 公钥是唯一的,我们就再创建一个新的给github-b使用。

打开终端,执行如下命令

复制代码
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_b  -C "test@test.tech"

一路回车,最终在~/.ssh目录下会有两个新文件:

id_ed25519_b 和 id_ed25519_b.pub

命令里的id_ed25519_b和邮箱可以换成你实际用的。
登录github-b的账户后台,在把id_ed25519_b.pub 添加到ssh key

此时肯定是可以添加成功的,这是一个新的ssh key。

步骤二 设置ssh config

vi ~/.ssh/config ,添加如下内容

复制代码
# github-a 账户(当前使用的)
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

# github-b 账户
Host github.com-b
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_b
  IdentitiesOnly yes

添加完成后,在终端执行如下命令验证下:

复制代码
ssh -T git@github.com-b

正常的话会看到类似如下的内容:

复制代码
Hi github-b! You've successfully authenticated, but GitHub does not provide shell access.

步骤三 使用github-b的仓库

假设你在github-b下面有个仓库test-b,默认的ssh地址是:

复制代码
git@github.com:github-b/test-b.git

把github.com换成github.com-b,得到实际要clone的地址:

复制代码
git@github.com-b:github-b/test-b.git

此时就能正常clone到本机了:

复制代码
git clone git@github.com-b:github-b/test-b.git

之后在这个仓库下正常使用git命令,纵享丝滑。比如:

复制代码
git pull
git push