1. 首页 > 编程开发 > github

同一台电脑关联多个github账号上传仓库时出错

我有两个github的账号秘钥 beylze ssh-keygen -t rsa -C "beylze@qq.com" 密钥路径:C:\Users\EDY\.ssh\id_ed25519?不确定是不是这个 sitewebtools ssh-keygen -t ed25519 -C "beylze@163.com" 密钥路径:C:\Users\EDY\.ssh\id_ed25519.pub

你现在的核心问题是:两个 GitHub 账号的 SSH 密钥混在一起,且路径 / 配置混乱,导致 Git 始终用 beylze 的密钥登录,无法切换到 sitewebtools 账号。首先我先帮你理清密钥路径,再教你配置「SSH 配置文件」实现多账号密钥隔离,这样就能精准用 sitewebtools 账号推送代码了。

第一步:先理清你的密钥路径(关键!)

你提到的路径有明显错误,先纠正:
表格
账号 生成命令 私钥路径(核心,用于登录) 公钥路径(上传到 GitHub)
beylze ssh-keygen -t rsa -C "beylze@qq.com" C:\Users\EDY\.ssh\id_rsa C:\Users\EDY\.ssh\id_rsa.pub
sitewebtools ssh-keygen -t ed25519 -C "beylze@163.com" C:\Users\EDY\.ssh\id_ed25519 C:\Users\EDY\.ssh\id_ed25519.pub

⚠️ 重要:
  • .pub 结尾的是公钥(要上传到 GitHub 对应账号),无 .pub 的是私钥(本地保存,用于身份验证);
  • 你之前 SSH 验证输出 Hi beylze!,是因为 Git 默认用 id_rsa/id_ed25519 中优先级高的密钥(大概率是 beylzeid_rsa)登录,而非 sitewebtools 的密钥。

第二步:先确认两个账号的公钥已正确上传

  1. 登录 beylze 账号
    • GitHub → 头像 → Settings → SSH and GPG keys → 确认已添加 id_rsa.pub(beylze 的公钥);
  2. 登录 sitewebtools 账号
    • 同样路径 → 确认已添加 id_ed25519.pub(sitewebtools 的公钥);✅ 这一步必须做,否则后续配置也会权限不足。

第三步:配置 SSH 配置文件(实现多账号密钥隔离)

通过 config 文件指定「哪个仓库用哪个账号的密钥」,Windows 下操作如下:

1. 打开 Git Bash,创建 / 编辑 SSH 配置文件

bash
运行
# 进入 .ssh 目录
cd ~/.ssh
# 新建/编辑 config 文件(如果没有会自动创建)
vi config

2. 粘贴以下配置(复制即可,适配你的路径)

bash
运行
# 配置 beylze 账号(默认账号)
Host github.com-beylze
  HostName github.com
  User git
  IdentityFile C:\Users\EDY\.ssh\id_rsa  # beylze 的私钥路径
  IdentitiesOnly yes  # 强制使用指定密钥,避免混用

# 配置 sitewebtools 账号(推送到目标仓库用)
Host github.com-sitewebtools
  HostName github.com
  User git
  IdentityFile C:\Users\EDY\.ssh\id_ed25519  # sitewebtools 的私钥路径
  IdentitiesOnly yes
  • Esc → 输入 :wq → 回车,保存并退出 vi 编辑器。

3. 测试两个账号的 SSH 连接(验证配置)

bash
运行
# 测试 beylze 账号(应输出 Hi beylze!)
ssh -T git@github.com-beylze

# 测试 sitewebtools 账号(应输出 Hi sitewebtools!)
ssh -T git@github.com-sitewebtools
  • 如果 sitewebtools 测试失败:检查 id_ed25519.pub 是否正确上传到 sitewebtools 账号的 GitHub,或私钥路径是否写错。

第四步:关联远程仓库并推送(用 sitewebtools 账号)

bash
运行
# 1. 进入项目目录(确保路径正确)
cd ~/Desktop/工作/脚本开发/Presentation-Creator

# 2. 删除旧的远程仓库关联(避免混淆)
git remote remove origin

# 3. 添加 sitewebtools 账号的远程仓库地址(用自定义 Host 名)
git remote add origin git@github.com-sitewebtools:sitewebtools/Presentation-Creator.git

# 4. 验证远程地址(确认正确)
git remote -v

# 5. 推送代码(此时用的是 sitewebtools 账号的密钥,有权限)
git push -u origin main

第五步:修正本地 Git 配置(可选,统一作者名)

你的 user.namesitewebtoolsuser.emailbeylze@163.com,虽然不影响权限,但为了提交记录规范,可按仓库单独配置:
bash
运行
# 进入项目目录,配置该仓库的作者名/邮箱(仅对当前仓库生效)
git config user.name "sitewebtools"
git config user.email "sitewebtools的邮箱@xxx.com"  # 建议改成 sitewebtools 账号的注册邮箱

# 查看当前仓库配置(验证)
git config user.name
git config user.email

常见问题排查

  1. 测试 sitewebtools SSH 仍输出 Hi beylze!
    • 原因:id_ed25519.pub 上传到了 beylze 账号,而非 sitewebtools
    • 解决:登录 sitewebtools 账号,删除错误的公钥,重新上传 id_ed25519.pub
  2. 推送仍提示权限不足
    • 检查 config 文件中 IdentityFile 路径是否正确(比如是否写成 .pub 结尾);
    • 确保 IdentitiesOnly yes 配置已加(强制用指定密钥)。

总结

  1. 核心解决思路:通过 SSH config 文件隔离两个账号的密钥,指定「sitewebtools 仓库用 sitewebtools 密钥」;
  2. 关键步骤:确认公钥上传到对应 GitHub 账号 → 配置 config 文件 → 测试 SSH 连接 → 重新关联仓库并推送;
  3. 避坑点:私钥路径不能带 .pubIdentitiesOnly yes 必须加,否则会混用密钥。
按这个流程操作后,就能用 sitewebtools 账号的权限推送到目标仓库了,以后不同账号的仓库只需换 Host 名即可,不会再混钥。

声明:本文网友投稿,观点仅代表作者本人,不代表鲁班SEO赞同其观点或证实其描述。

联系我们

在线咨询:点击这里给我发消息

微信号:

工作日:9:30-18:30,节假日休息