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

如何避免Git反复要求登录?新仓库SSH首次推送认证异常

解决Git SSH认证通过但推送仍要求登录的问题

我之前也碰到过一模一样的情况——明明ssh -T git@github.com显示认证成功,推代码的时候还是弹出登录框要输凭据,折腾了好一会儿才把问题搞定,给你整理几个最有效的解决思路:

1. 检查仓库远程地址是否为SSH协议

这是最常见的原因!很多时候我们克隆仓库或者初始化远程仓库时,不小心用了HTTPS地址,哪怕本地配置了SSH密钥,Git还是会走HTTPS的认证流程。

  • 先查看当前远程地址:

    git remote -v
    

    如果输出里是https://github.com/用户名/仓库名.git这种格式,说明用的是HTTPS协议。

  • 修改为SSH地址:

    git remote set-url origin git@github.com:你的用户名/你的仓库名.git
    

    替换成你自己的用户名和仓库名就行,之后再推送应该就会走SSH认证了。

2. 清除Git凭据缓存

如果之前用HTTPS推送过,Git的凭据助手可能缓存了旧的登录信息,导致即使改成SSH,还是会触发HTTPS的认证提示。

  • 先查看当前的凭据助手配置:

    git config --global credential.helper
    
  • 根据不同系统清除缓存:

    • Windows:打开Git Bash执行
      git credential-manager-core erase
      
      然后提示输入protocol=https和host=github.com,直接回车确认清除。
    • MacOS:执行
      git credential-osxkeychain erase
      
      同样输入protocol=https和host=github.com回车清除。
    • Linux:如果用的是libsecret,可以直接删除对应的缓存条目,或者执行
      git config --global --unset credential.helper
      
      临时禁用凭据助手,之后再按需开启。

3. 确保SSH密钥已加载到ssh-agent

有时候ssh -T能成功是因为手动输入了密钥密码,但ssh-agent没有自动加载密钥,导致Git推送时无法自动获取密钥,进而 fallback 到HTTPS认证。

  • Linux/MacOS:在终端执行

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa
    

    (如果你的密钥不是默认的id_rsa,替换成对应的文件名)

  • Windows(Git Bash):同样执行上面的命令;如果用PowerShell,先启动ssh-agent服务:

    Start-Service ssh-agent
    ssh-add ~/.ssh/id_rsa
    

另外还要确保密钥文件的权限正确,Linux/MacOS上执行:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

权限太宽的话,SSH会拒绝使用该密钥。

4. 确认GitHub上的SSH密钥配置正确

虽然ssh -T显示认证成功,但还是可以再确认一遍:

  • 登录GitHub,进入Settings > SSH and GPG keys
  • 检查是否有对应的公钥(公钥文件是~/.ssh/id_rsa.pub,内容要完全一致)
  • 确保密钥没有过期,并且关联的是你当前使用的GitHub账号

按上面的步骤排查下来,基本就能解决反复要求登录的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:28:34