You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置多Git账号后推送GitHub遇Permission denied(publickey)错误求助

解决多Git账号SSH密钥权限问题

核心问题

多Git账号共存时,SSH默认只会尝试使用默认密钥文件,导致非默认账号的密钥无法被正确匹配,从而触发权限拒绝错误。以下是针对性解决步骤:

1. 创建/修改SSH配置文件

Windows系统下,SSH配置文件路径为C:\Users\<你的用户名>\.ssh\config,如果没有该文件直接新建即可。按账号分别配置规则,强制指定每个账号对应的密钥:

# 个人GitHub账号
Host github-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519-personal  # 替换成你的个人私钥文件名
    IdentitiesOnly yes

# 工作GitHub账号
Host github-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519-work  # 替换成你的工作私钥文件名
    IdentitiesOnly yes

# 学校GitLab账号(保留现有正常配置即可)
Host gitlab-school
    HostName <你的学校GitLab域名>
    User git
    IdentityFile ~/.ssh/id_ed25519-school
    IdentitiesOnly yes

注:IdentitiesOnly yes的作用是强制SSH仅使用指定的密钥,避免ssh-agent自动尝试其他密钥导致权限验证失败。

2. 更新本地仓库的远程地址

将个人/工作GitHub仓库的远程地址,从默认的git@github.com:<用户名>/<仓库名>.git替换为配置文件中定义的Host别名:

  • 个人仓库更新命令:
    git remote set-url origin github-personal:YourPersonalUsername/your-repo.git
    
  • 工作仓库更新命令:
    git remote set-url origin github-work:YourWorkUsername/your-work-repo.git
    

3. 验证配置有效性

分别测试个人和工作账号的SSH连接:

  • 测试个人账号:
    ssh -T github-personal
    
    正常返回应为:Hi YourPersonalUsername! You've successfully authenticated, but GitHub does not provide shell access.
  • 测试工作账号同理:
    ssh -T github-work
    

4. 额外排查点

  • 确认GitHub账号下添加的公钥,与本地对应私钥的.pub文件内容完全一致(无多余空格、换行)
  • 调整私钥文件权限:Windows系统右键私钥文件→属性→安全→高级,设置仅当前用户拥有读取权限,删除其他用户的权限(SSH会拒绝使用权限过宽的私钥)
  • 若之前用HTTPS方式连接过仓库,可能存在凭证缓存,可运行git config --global --unset credential.helper清除缓存后再测试

内容的提问来源于stack exchange,提问作者NaanBaysa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 05:58:24