多个 GitHub 账户SSH 密钥配置全攻略

在工作和个人项目中,我们经常需要使用多个 GitHub 账户。如果不进行合理配置,Git 操作(如 git pushgit pull)总是使用默认账户,容易出错。本文记录了我在 Windows 上删除旧账户、生成新的 SSH 密钥,并实现多个 GitHub 用户共存的整个流程。

一、删除原有用户并重新连接

当需要完全切换 GitHub 账户时,我先删除旧的 SSH 配置,然后为新账户生成新的 RSA 密钥。操作步骤如下:

1. 生成新的 RSA 密钥

在命令行中执行:

bash 复制代码
ssh-keygen -t rsa -b 4096 -C "my_email@example.com"
  • -t rsa 表示使用 RSA 算法。
  • -b 4096 表示生成 4096 位的密钥,更安全。
  • -C 用于添加注释,这里填写邮箱。

如果希望覆盖旧密钥,直接将文件名选择为默认 id_rsa;如果想保留旧密钥,可以另取名字,如 id_rsa_new_user

2. 添加公钥到 GitHub

生成密钥后,我将公钥复制到 GitHub:

bash 复制代码
cat ~/.ssh/id_rsa_new_user.pub

复制从 ssh-rsa 开头到邮箱结尾的全部内容,然后在新 GitHub 账户中:

  1. 进入 Settings → SSH and GPG keys
  2. 点击 New SSH key
  3. 填写 Title(例如 "My Windows Laptop - New Account")。
  4. 粘贴公钥到 Key 区域。
  5. 点击 Add SSH key

3. 测试连接

执行:

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

如果输出:

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

说明成功连接。

注意:SSH 会按默认顺序尝试密钥:
~/.ssh/id_rsa → ~/.ssh/id_ed25519 → 其他 key

如果没有指定 key 或 ssh-agent 使用旧 key,Git 会一直使用旧账户。

二、多个用户共存

为了同时保留多个 GitHub 账户,我为新账户生成了独立的 SSH 密钥,并通过 SSH 配置区分不同账户。

1. 为新账户生成独立 SSH 密钥

文件名不能覆盖旧密钥:

bash 复制代码
ssh-keygen -t rsa -b 4096 -C "new_email@example.com" -f ~/.ssh/id_rsa_new_user

此时 ~/.ssh/ 目录下有:

  • 原密钥:id_rsa & id_rsa.pub
  • 新密钥:id_rsa_new_user & id_rsa_new_user.pub

然后将新公钥添加到新 GitHub 账户。

2. 配置 SSH 客户端

找到~/.ssh/config

~/.ssh/config(Windows 上在 C:\Users\MyUsername\.ssh\config)中添加:

latex 复制代码
# 原始用户(默认用户)
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

# 新用户(用于克隆私有项目)
Host github.com-newuser
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_new_user
  • Host github.com-newuser 是新账户别名。
  • IdentityFile 指定对应账户的私钥。

3. 使用新账户克隆仓库

当克隆新账户的私有仓库时,我使用别名:

bash 复制代码
git clone git@github.com-newuser:NewUserOrg/private-repo.git

克隆地址中的 github.com 替换为配置文件中定义的别名 github.com-newuser。push 和 pull 也会使用对应密钥。

📚推荐阅读

Git安装教程及常用命令!

Cursor使用教程!

TensorBoard最全使用教程!

关于深度学习和大模型相关的知识和前沿技术更新,请关注公众号aicoting!

相关推荐
没有bug.的程序员2 小时前
Java 序列化:Serializable vs. Protobuf 的性能与兼容性深度对比
java·开发语言·后端·反射·序列化·serializable·protobuf
我爱娃哈哈3 小时前
SpringBoot + Spring Security + RBAC:企业级权限模型设计与动态菜单渲染实战
spring boot·后端·spring
小王不爱笑1324 小时前
SpringBoot 配置文件
java·spring boot·后端
想用offer打牌5 小时前
Spring AI vs Spring AI Alibaba
java·人工智能·后端·spring·系统架构
码农幻想梦6 小时前
实验五 spring入门及IOC实验
java·后端·spring
a程序小傲6 小时前
蚂蚁Java面试被问:向量数据库的相似度搜索和索引构建
开发语言·后端·python·架构·flask·fastapi
派大鑫wink8 小时前
【Day39】Spring 核心注解:@Component、@Autowired、@Configuration 等
java·后端·spring
Java程序员威哥9 小时前
Java应用容器化最佳实践:Docker镜像构建+K8s滚动更新(生产级完整模板+避坑指南)
java·开发语言·后端·python·docker·kubernetes·c#
源代码•宸9 小时前
Golang原理剖析(defer、defer面试与分析)
开发语言·经验分享·后端·面试·golang·defer·开放编码
南山乐只9 小时前
Java并发原生工具:原子类 (Atomic Classes)
java·开发语言·后端