在一台 Linux 服务器上用 SSH 拉取两个 Git 工程,而这两个工程对应的是 不同的 Git 账号(SSH Key),做法:
使用 SSH Config 配置多个 Git 账号
场景假设:
- 工程 A 的仓库地址:
git@github.com:company-a/project-a.git
- 工程 B 的仓库地址:
git@github.com:company-b/project-b.git
- 工程 A 使用的 SSH key 是:
~/.ssh/id_rsa_company_a
- 工程 B 使用的 SSH key 是:
~/.ssh/id_rsa_company_b
1. 生成两个 SSH key(如果没有)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_company_a
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_company_b
然后将这两个 *.pub
公钥添加到各自 Git 平台账号的 SSH 设置中。
2. 编辑 SSH 配置文件
vim ~/.ssh/config
添加如下配置(或 nano
编辑):
# 配置公司 A 的 Git 访问
Host github-company-a
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_company_a
# 配置公司 B 的 Git 访问
Host github-company-b
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_company_b
3. 修改 Git 仓库地址,使用 SSH 配置的 Host
⚠️ 注意:不能用默认的
git@github.com
,而要改成你定义的别名github-company-a
或github-company-b
。
例如:
克隆项目 A:
git clone git@github-company-a:company-a/project-a.git
克隆项目 B:
git clone git@github-company-b:company-b/project-b.git
✅ 验证
可以通过以下命令验证是否正确加载不同 key:
ssh -T git@github-company-a
ssh -T git@github-company-b
📌 提示
- 确保两个私钥文件权限为 600:
chmod 600 ~/.ssh/id_rsa_company_*
- 如果是在 CI/CD 环境或服务器上部署,可将
ssh/config
和私钥通过环境变量或自动化方式部署上去。