You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GitHub私有仓库HTTPS连接失败,SSH可行,求助问题排查与修复方案

分析HTTPS方式推送失败的原因及修复方案

我来帮你拆解这两个HTTPS推送失败的问题,以及对应的解决办法:

1. 错误:Error: Repository not found

这个错误看起来是仓库找不到,但实际上大多是认证权限问题或者地址错误

  • 可能原因
    • 你复制的HTTPS地址有误,比如少了仓库名、拼写错误,或者把私有仓库的地址和公开仓库搞混了。
    • Git本地存储的GitHub凭证过期或不正确,导致GitHub拒绝你的访问,但返回的提示是“仓库找不到”(这是GitHub的一种权限保护策略)。
    • 当前使用的GitHub账号没有该私有仓库的读写权限,比如你用了A账号的凭证,但仓库是B账号创建的,且没添加A为协作者。
  • 修复方法
    • 先检查远程仓库地址:执行git remote -v查看当前的远程地址,和GitHub仓库页面上的HTTPS地址对比,如果不一致,用git remote set-url origin <正确的HTTPS地址>更新。
    • 重置Git凭证:
      • Windows:打开「控制面板→用户账户→凭据管理器→Windows凭据」,找到GitHub相关的条目删除,重新执行git push,会提示你输入用户名和个人访问令牌(PAT)(GitHub现在已经不支持密码登录,必须用PAT)。
      • Mac:在终端执行git credential-osxkeychain erase,然后按提示输入host=github.comprotocol=https,回车删除凭证,再重新push输入PAT。
      • Linux:执行git credential-cache exit清除缓存的凭证,重新push输入PAT。
    • 确认权限:登录GitHub,进入该私有仓库的「Settings→Collaborators and teams」,检查当前账号是否在协作列表里,没有的话让仓库所有者添加你。

2. 错误:Failed to connect to github.com port 443 : Connection Refused

这个是典型的网络连接问题

  • 可能原因
    • 本地防火墙、杀毒软件拦截了443端口的出站请求(HTTPS默认用443端口)。
    • Git配置了错误的代理,或者代理服务已经失效,导致无法通过代理连接GitHub。
    • 本地网络限制了对GitHub的访问,比如DNS解析失败,或者IP被屏蔽。
  • 修复方法
    • 临时关闭防火墙/杀毒软件:如果关闭后能成功push,说明是它们拦截了连接,需要在软件里添加Git的允许规则。
    • 检查并清理代理配置:
      • 执行git config --global --get http.proxygit config --global --get https.proxy,如果输出了代理地址但你不需要代理,用git config --global --unset http.proxygit config --global --unset https.proxy清除。
      • 如果需要代理,确认代理地址和端口正确,并且代理能正常访问GitHub(可以用浏览器测试代理是否能打开GitHub)。
    • 修改hosts文件:
      • 先ping github.com获取可用的IP(或者查GitHub官方公布的IP段),比如得到140.82.113.4
      • 修改本地hosts文件:Windows在C:\Windows\System32\drivers\etc\hosts,Mac/Linux在/etc/hosts,添加一行140.82.113.4 github.com,保存后刷新DNS(Windows执行ipconfig /flushdns,Mac/Linux执行sudo dscacheutil -flushcache),再尝试push。

为什么SSH方式能成功?

SSH用密钥对进行认证,不需要输入用户名和令牌,避开了HTTPS的凭证存储问题;同时SSH默认用22端口,很多网络环境下22端口的限制比443少,所以能绕过你的网络连接问题。

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

火山引擎 最新活动