如何避免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 eraseprotocol=https和host=github.com,直接回车确认清除。 - MacOS:执行
同样输入git credential-osxkeychain eraseprotocol=https和host=github.com回车清除。 - Linux:如果用的是
libsecret,可以直接删除对应的缓存条目,或者执行
临时禁用凭据助手,之后再按需开启。git config --global --unset credential.helper
- Windows:打开Git Bash执行
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

