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

新建第二个GitHub账号推送代码报无法读取远程仓库错误

问题根因

双GitHub账号SSH推送报权限错误,核心原因是本地SSH默认复用第一个账号的密钥发起鉴权,未对第二个账号做独立的主机路由配置,GitHub收到请求后识别到请求携带的密钥归属第一个账号,对第二个账号下的仓库无访问权限,直接返回连接拒信。

分步排查&修复流程
  • 第一步:先确认当前SSH默认连接的GitHub账号
    终端执行命令:
    ssh -T git@github.com
    如果返回结果里的用户名是你的第一个GitHub账号,即可确认是密钥匹配错误导致的故障。
  • 第二步:为第二个账号生成独立SSH密钥对
    不要覆盖原有第一个账号的密钥,执行以下命令生成新密钥:
    ssh-keygen -t ed25519 -C "第二个GitHub账号绑定的邮箱" -f ~/.ssh/github_second
    执行过程中连续按回车即可,新手暂不建议设置密钥口令,减少额外配置环节。
  • 第三步:添加公钥到第二个GitHub账号
    打开本地路径~/.ssh/下的github_second.pub文件,复制全部文本内容,登录第二个GitHub账号,进入「设置-SSH和GPG密钥」页面,新增SSH密钥,把复制的公钥粘贴进去保存。
  • 第四步:修改SSH本地配置文件
    找到~/.ssh/config文件,不存在则手动新建,写入以下配置,注意两个账号的Host字段不能重复:
    # 第一个原有账号配置(保留原有可用配置即可)
    Host github.com
      HostName github.com
      User git
      IdentityFile ~/.ssh/github_first # 替换为你第一个账号原有私钥的实际路径
      IdentitiesOnly yes
    
    # 第二个新账号配置,Host字段自定义别名即可,不要和第一个重复
    Host github-second
      HostName github.com
      User git
      IdentityFile ~/.ssh/github_second # 替换为刚生成的第二个账号私钥路径
      IdentitiesOnly yes
    
    配置中IdentitiesOnly yes为必填项,作用是强制SSH只使用指定的私钥发起连接,避免加载本地缓存的其他密钥导致串号。
  • 第五步:修改第二个账号对应本地仓库的远程地址
    进入本地第二个账号的仓库目录,执行命令替换原有远程URL,把原URL里的github.com替换为你在config里给第二个账号设置的Host别名:
    git remote set-url origin git@github-second:第二个账号用户名/目标仓库名.git
    替换后执行git remote -v,确认返回的fetch、push地址和你设置的一致。
  • 第六步:验证配置有效性
    终端执行:
    ssh -T git@github-second
    如果返回Hi 第二个账号用户名! You've successfully authenticated, but GitHub does not provide shell access.说明SSH鉴权配置正常,此时执行push、pull操作即可正常运行。
常见排错点
  • 配置文件权限异常:如果出现文件权限报错,分别执行chmod 600 ~/.ssh/github_second、chmod 644 ~/.ssh/config修正权限即可
  • 密钥缓存干扰:如果验证时还是匹配到第一个账号,执行ssh-add -D清空SSH agent缓存的密钥后重试
  • 地址拼写错误:确认远程URL里的账号名、仓库名大小写和GitHub上的完全一致,不存在拼写错误
  • 仓库存在性校验:确认第二个账号下的目标仓库确实已创建,不是已删除/未初始化的空地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:57:20