1. 检查现有 SSH 密钥
# 进入SSH配置目录 cd ~/.ssh # 查看目录内容(示例输出) ls config id_rsa_account1.pub id_rsa_account2.pub id_rsa_account1 id_rsa_account2 known_hosts
2. 为每个账户生成 SSH 密钥(如果不存在)
# 为account1生成密钥 ssh-keygen -t rsa -b 4096 -C "account1@example.com" # 文件名: id_rsa_account1 # 为account2生成密钥 ssh-keygen -t rsa -b 4096 -C "account2@example.com" # 文件名: id_rsa_account2
3. 配置 SSH config 文件
编辑~/.ssh/config
文件:
nano ~/.ssh/config
添加以下内容:
# account1配置(默认) Host github.com-account1 HostName github.com User git IdentityFile ~/.ssh/id_rsa_account1 # account2配置 Host github.com-account2 HostName github.com User git IdentityFile ~/.ssh/id_rsa_account2
4. 将 SSH 公钥添加到 GitHub 账户
# 显示account1的公钥(复制此内容) cat ~/.ssh/id_rsa_account1.pub # 显示account2的公钥(复制此内容) cat ~/.ssh/id_rsa_account2.pub
分别登录 GitHub 账户:
- account1:Settings > SSH and GPG keys > New SSH key > 粘贴
id_rsa_account1.pub
的内容 - account2:Settings > SSH and GPG keys > New SSH key > 粘贴
id_rsa_account2.pub
的内容
5. 验证 SSH 连接
# 测试account1连接 ssh -T git@github.com-account1 # 预期输出: Hi account1! ... # 测试account2连接 ssh -T git@github.com-account2 # 预期输出: Hi account2! ...
6. 配置 Git 用户信息
# 设置全局默认用户为account1 git config --global user.name "Account One" git config --global user.email "account1@example.com"
7. 创建工作区目录
# 创建account1工作区 mkdir -p ~/workspace/account1 cd ~/workspace/account1 # 创建account2工作区 mkdir -p ~/workspace/account2 cd ~/workspace/account2
8. 使用不同账户克隆仓库
# 使用account1克隆(默认) git clone git@github.com-account1:account1/repo1.git # 使用account2克隆(显式指定) git clone git@github.com-account2:account2/repo2.git
9. 为 account2 仓库配置独立用户信息
# 进入account2的仓库 cd ~/workspace/account2/repo2 # 设置仓库级用户信息(覆盖全局配置) git config user.name "Account Two" git config user.email "account2@example.com" # 验证配置 git config user.name # 输出: Account Two git config user.email # 输出: account2@example.com
10. 验证提交身份
分别在两个工作区创建测试提交:
# 在account1工作区提交 cd ~/workspace/account1/repo1 touch test1.txt git add . git commit -m "Test by Account One" git push origin master # 在account2工作区提交 cd ~/workspace/account2/repo2 touch test2.txt git add . git commit -m "Test by Account Two" git push origin master
访问 GitHub 仓库页面,确认两次提交分别显示为不同的账户。
关键配置对照表
配置项 |
account1 设置 |
account2 设置 |
SSH 配置别名 |
|
|
密钥文件名 |
|
|
克隆 URL 格式 |
|
|
Git 用户名 |
全局配置: |
仓库配置: |
Git 邮箱 |
全局配置: |
仓库配置: |