Pixiv @chokei
679 字
3 min
同一电脑,双开Github?
同一电脑,双开Github?
现在是北京时间23:50,在还有10分钟跨年的除夕夜里,我————正在改博客(((
从晚上6点一直弄到现在,中间遇到了一个很有意思的小问题。遂记录下来。
大家除夕快乐哇φ(゜▽゜*)♪
一、 生成多组 SSH 密钥对
GitHub 不允许在多个账号上使用同一个 SSH 公钥(当遇到多个账号使用同一个公钥时,GitHub会选择第一个配置这个公钥的账号作为推送时使用的身份),因此必须为每个账号生成独立的密钥。
- 为账号 A 生成密钥:
ssh-keygen -t rsa -C "email_A@example.com"# 在提示输入文件名时,指定一个唯一的名称,如:id_rsa_github_main- 为账号 B 生成密钥:
ssh-keygen -t rsa -C "email_B@example.com"# 指定名称如:id_rsa_github_second- 将密钥添加到系统中(防止失效):
ssh-add ~/.ssh/id_rsa_github_mainssh-add ~/.ssh/id_rsa_github_second- 复制公钥到Github
cat ~/.ssh/id_rsa_github_main.pub公钥的内容为一串长字符串,字符串的末尾为你输入的密钥备注
之后访问 Github 的用户的Settings界面,并来到 SSH and GPG keys 面板
点击 New SSH key ,之后将前面输出的公钥内容粘贴到 输入框中,起名字,直接save完成。
二、 配置 SSH Config 文件
通过修改 ~/.ssh/config 文件(若不存在则新建),为不同的账号设置“别名(Host)”,这是区分账号的核心。
在文件中输入以下内容:
# 账号 A (主账号)Host github.com HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_github_main
# 账号 B (小号/博客账号)Host github_second HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_github_second- 注意:
Host后面的名字是自定义的别名,后续克隆和推送代码时会用到。
三、 在不同项目中使用对应的账号
配置好 SSH 后,关键在于如何让 Git 知道某个项目该用哪个账号。
- 修改远程仓库地址:
如果你从小号(账号 B)克隆了一个博客仓库,默认地址是
git@github.com:user_b/blog.git。你需要将github.com修改为你设置的别名github_second:
# 如果是新项目git clone git@github_second:user_b/blog.git
# 如果是已有项目,修改 remote urlgit remote set-url origin git@github_second:user_b/blog.git- 单独配置项目用户信息:
NOTE为了保证博客提交记录显示的作者信息正确,不要使用全局配置(
--global)
需要在对应项目目录下进行局部配置:
git config user.name "Your_Name_B"git config user.email "email_B@example.com"四、 验证配置
使用以下命令测试连接是否指向了正确的账号:
- 测试主账号:
ssh -T git@github.com - 测试小号:
ssh -T git@github_second
如果看到 Hi [用户名]! You've successfully authenticated... 且用户名对应正确,说明配置成功。