我有两个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 始终用
表格
⚠️ 重要:
运行
运行
运行
运行
bash
运行
你现在的核心问题是:两个 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中优先级高的密钥(大概率是beylze的id_rsa)登录,而非sitewebtools的密钥。
第二步:先确认两个账号的公钥已正确上传
- 登录
beylze账号:- GitHub → 头像 → Settings → SSH and GPG keys → 确认已添加
id_rsa.pub(beylze 的公钥);
- GitHub → 头像 → Settings → SSH and GPG keys → 确认已添加
- 登录
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.name 是 sitewebtools,user.email 是 beylze@163.com,虽然不影响权限,但为了提交记录规范,可按仓库单独配置:bash
运行
# 进入项目目录,配置该仓库的作者名/邮箱(仅对当前仓库生效)
git config user.name "sitewebtools"
git config user.email "sitewebtools的邮箱@xxx.com" # 建议改成 sitewebtools 账号的注册邮箱
# 查看当前仓库配置(验证)
git config user.name
git config user.email
常见问题排查
- 测试 sitewebtools SSH 仍输出 Hi beylze!:
- 原因:
id_ed25519.pub上传到了beylze账号,而非sitewebtools; - 解决:登录
sitewebtools账号,删除错误的公钥,重新上传id_ed25519.pub。
- 原因:
- 推送仍提示权限不足:
- 检查
config文件中IdentityFile路径是否正确(比如是否写成.pub结尾); - 确保
IdentitiesOnly yes配置已加(强制用指定密钥)。
- 检查
总结
- 核心解决思路:通过 SSH
config文件隔离两个账号的密钥,指定「sitewebtools 仓库用 sitewebtools 密钥」; - 关键步骤:确认公钥上传到对应 GitHub 账号 → 配置
config文件 → 测试 SSH 连接 → 重新关联仓库并推送; - 避坑点:私钥路径不能带
.pub,IdentitiesOnly yes必须加,否则会混用密钥。
sitewebtools 账号的权限推送到目标仓库了,以后不同账号的仓库只需换 Host 名即可,不会再混钥。
声明:本文网友投稿,观点仅代表作者本人,不代表鲁班SEO赞同其观点或证实其描述。
