GitHub 多账号混用方案总结(SSH + HTTPS)
一、整体方案说明
适用场景
一台设备使用两个 GitHub 账号:
账号 A(个人):纯 SSH 方式,不依赖 GitHub CLI (gh)
账号 B(工作 / 其他):纯 HTTPS 方式,由 gh 管理登录与凭据
核心优势
两套认证完全隔离,不会串账号、权限混乱
无需频繁执行账号切换命令,使用简单
符合 GitHub 安全规范,不共用 SSH 密钥
二、关键前置规则
SSH 限制
一个 SSH 公钥仅能绑定一个 GitHub 账号,无法多账号共用
单账号 + 默认命名密钥,**无需配置 ****
\~/\.ssh/config**自定义密钥名 / 多组 SSH 密钥,才需要
\~/\.ssh/config区分
GitHub CLI (gh) 规则
gh仅管理 HTTPS 协议 的登录态与 Git 凭据,和 SSH 无关可主动在 gh 中删除 SSH 对应的账号,仅保留 HTTPS 账号,环境更干净
仓库使用协议决定认证方式:SSH 仓库走密钥,HTTPS 仓库走 gh 凭据
三、分步配置流程
1. 配置 SSH 账号(个人账号,无 config)
1.1 生成默认名称 SSH 密钥
推荐使用 ed25519 算法(安全性更高):
|
全程回车,使用默认路径与文件名:
\~/\.ssh/id\_ed25519按需设置密钥密码(可选)
1.2 上传公钥到 GitHub
- 查看公钥内容:
|
复制全部输出内容
登录个人 GitHub →
Settings→SSH and GPG keys→New SSH key粘贴公钥,保存即可
1.3 测试连通性
|
出现 Hi 用户名\! You\&\#39;ve successfully authenticated 即配置成功。
补充:当前为单 SSH 账号 + 默认密钥,删除 / 不创建
\~/\.ssh/config均可正常使用。
2. 配置 HTTPS 账号(工作账号,gh 管理)
2.1 登录 gh(仅保留该账号)
|
2.2 查看当前 gh 登录列表
|
2.3 删除 gh 中多余的 SSH 对应账号(关键步骤)
如果列表里存在个人 SSH 账号,执行删除:
|
执行后再次 gh auth status,确保仅保留工作账号。
2.4 关联 Git 凭据
让 Git 自动复用 gh 的 HTTPS 登录态,免重复输入账号密码:
|
3. 仓库使用规范(核心,避免串账号)
3.1 个人仓库(SSH 协议)
克隆 / 使用必须使用 SSH 地址,全程无需操作 gh
|
3.2 工作仓库(HTTPS 协议)
克隆 / 使用必须使用 HTTPS 地址,gh 保持当前账号即可,无需切换
|
四、常用排查与问题解决
1. 查看仓库当前使用协议
进入仓库目录执行:
|
地址为
git@github\.com→ SSH 协议,走密钥认证地址为
https://github\.com→ HTTPS 协议,走 gh 凭据
2. HTTPS 认证异常(凭据缓存冲突)
清除本地 Git 凭据缓存:
|
之后重新执行 gh auth setup\-git。
3. 误混用协议导致权限报错
个人仓库误用 HTTPS:远程地址改为 SSH 格式
工作仓库误用 SSH:远程地址改为 HTTPS 格式
修改远程地址命令示例:
|
五、最终使用总结
SSH 个人账号
不依赖 gh,gh 中已删除该账号登录态
单默认密钥,无需
\~/\.ssh/config所有操作
git pull/push直接执行,零切换
HTTPS 工作账号
仅由 gh 管理,gh 常驻该账号即可
无需执行
gh auth switch切换账号所有 HTTPS 仓库自动复用凭据
整体原则:协议绑定账号,两套体系完全独立,是多账号场景下最简、最稳定的混用方案。
保存说明
全选上方所有文本,复制;
本地新建文本文档,粘贴内容;
将文件后缀名改为
\.md(例如github\-multi\-account\.md),即可完成保存下载。
(注:文档部分内容可能由 AI 生成)