2.7 KiB
2.7 KiB
title, type, tags, date
| title | type | tags | date | |||||
|---|---|---|---|---|---|---|---|---|
| Git Push 连接重置问题修复 | source |
|
2025-03-16 |
Source File
Summary
- 核心主题:GitHub Push 报
Recv failure: Connection was reset的修复方案 - 问题域:国内访问 GitHub 时 TCP 连接被 GFW 阻断,间歇性 TLS 握手失败
- 方法/机制:分别为 Git 配置 HTTP/SOCKS5 代理,或切换为 SSH 协议并配置代理
- 结论/价值:国内环境 Git 操作必须走本地代理,SOCKS5 速度通常优于 HTTP 代理
Key Claims
Connection was reset是 TCP 层面中断,非权限问题;GFW 检测到 GitHub 域名后发送 TCP RST 包阻断连接- 间歇性原因是 GitHub CDN 多 IP 部分被封锁
- HTTP 代理命令:
git config --global http.proxy http://127.0.0.1:10809 - SOCKS5 代理命令:
git config --global http.proxy socks5://127.0.0.1:10808 - SSH 协议切换:
git remote set-url origin git@github.com:username/repo.git - Linux/Mac SSH 走代理:
ProxyCommand nc -X 5 -x 127.0.0.1:10808 %h %p - Windows Git SSH 走代理:
ProxyCommand connect -S 127.0.0.1:10808 %h %p - 取消代理:
git config --global --unset http.proxy && git config --global --unset https.proxy
Key Quotes
"Recv failure: Connection was reset(连接重置)并不是账号权限验证失败,而是 TCP 连接层面的中断" — 诊断关键:区分网络层 vs 应用层错误
Key Concepts
- TCP RST 攻击:GFW 通过发送 TCP Reset 包阻断连接,非包过滤
- Git HTTP/SOCKS5 代理:通过
http.proxy/https.proxy全局配置让 Git 流量走本地代理 - Git SSH 协议切换:将远程地址从 HTTPS 改为 SSH,规避 443 端口干扰
- SSH ProxyCommand:通过
connect(Windows)或nc(Linux/Mac)让 SSH 走 SOCKS5 代理 - GFW 封锁特征:GitHub 域名被 DPI 检测后触发 TCP RST,CDN 节点部分被封导致间歇性
Key Entities
- GitHub:全球最大代码托管平台,国内访问受 GFW 干扰
- V2RayN:本地 SOCKS5/HTTP 代理工具,监听 10808/10809 端口
- Clash:代理客户端,同样支持 SOCKS5 和 HTTP 出局
Connections
- Git HTTP/SOCKS5 代理 ← solves ← TCP RST 攻击
- Git SSH 协议切换 ← alternative_to ← Git HTTP/SOCKS5 代理
- V2RayN ← provides ← SOCKS5 代理
- GitHub ← blocked_by ← GFW 封锁特征
Contradictions
- 与其他 Git 代理方案(如
gh proxy、VPN 全局模式)相比:本文方法仅影响 Git 命令,不干扰终端其他网络请求
Metadata
- 作者:shenwei
- 创建时间:2025-03-16
- 原始标签:[github, proxy, push, socks5]