# 在 macOS/Linux 上优雅使用个 GitHub 账户
# 问题背景
在日常开发中,我们可能会需要同时使用多个 GitHub 账户:
- 个人账户用于开源项目和个人学习
- 公司账户用于工作项目
- 客户账户用于特定客户项目
传统的单账户配置无法满足这种需求,直接配置多个账户又会遇到密钥冲突的问题。 本文将介绍如何在 macOS/linux 上解决多GitHub账户的使用问题。
为了便于说明, 我们假设有两个账户github_a 和 github_b。当前使用的账户是github_a, 本地电脑上的ssh-key名称是id_ed25519。
现在需要支持github_b账户的使用,我们来动手配置一下吧。
# 步骤一 创建一个新的ssh key
打开终端,执行如下命令
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,在github那边不冲突了。
# 步骤二 设置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
github_a的仓库使用不受影响,继续用github.com地址。