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

已配置SSH密钥,推送代码至GitHub时仍需输入用户名和密码,原因是什么?

已配置SSH密钥但GitHub推送仍要求输入用户名密码的原因
  • 仓库远程地址用的是HTTPS而非SSH:这是最常见的问题。执行git remote -v查看当前仓库的远程地址,如果输出是https://github.com/<用户名>/<仓库名>.git格式,说明Git用的是HTTPS协议,不管SSH密钥有没有配置,都会触发用户名密码验证。
  • SSH公钥未正确添加到GitHub账户:你可能只在本地生成了密钥对,但没把公钥内容添加到GitHub的SSH密钥列表里。登录GitHub后进入「Settings」→「SSH and GPG keys」,检查是否有你本地生成的公钥条目。
  • SSH连接本身存在问题:可以用ssh -T git@github.com测试与GitHub的SSH连接,如果返回错误信息(比如权限被拒、找不到密钥),说明SSH配置有问题——可能是本地~/.ssh/config文件配置错误,或者密钥路径没指定对,也可能是防火墙/代理干扰了SSH连接。
  • 系统缓存了旧的HTTPS凭证:之前用HTTPS方式推送代码时,系统可能保存了用户名密码的缓存,导致Git优先使用HTTPS的凭证验证,而非SSH。Windows用户可以通过「凭据管理器」删除GitHub相关的凭证;macOS用户在「钥匙串访问」里删除对应条目;Linux用户可以执行git config --global credential.helper unset清除缓存。
  • SSH密钥文件权限不符合要求:SSH对密钥文件的权限有严格要求,私钥(比如id_rsa)权限如果过于开放(比如设成777),SSH会拒绝使用该密钥。执行以下命令修正权限:
    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub
    
  • Git配置强制转换SSH地址为HTTPS:全局或仓库级的Git配置中可能存在url.https://github.com/.insteadOf git@github.com:设置,强制把SSH地址转成HTTPS。执行git config --global --get url.https://github.com/.insteadOf查看是否有该配置,如果有,用git config --global --unset url.https://github.com/.insteadOf删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:50:30