环境
系统:Windows 10 + Git 2.42.0
网络:出租屋房东路由(普通宽带,无内网域名)
工具:Clash(仅 HTTP 7890 端口,无 SOCKS5 7891)
仓库:github.com/xxx.git
现象
git push 报
OpenSSL SSL_connect: Connection was reset in connection to github.com:443
curl 走代理 200 正常,说明 Clash 隧道通,但 TLS 握手被随机 RST。
换 hub.fastgit.org 镜像同样 RST → 证明出口 IP 本身被 QoS/污染。
排查时间线
① 确认 Git 代理
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
② 验证代理端口
curl -I https://github.com --proxy http://127.0.0.1:7890
显示
→ HTTP/1.1 200 Connection established
③ 尝试 SOCKS5 发现 Clash 未开 7891 → 回退 HTTP
④ 换订阅/节点依旧 RST → 确认不是单节点问题
⑤ 改 SSH over 443(终极方案)
新建/修改 ~/.ssh/config
Host github.com
HostName ssh.github.com
Port 443
User git
显示公钥并复制
cat ~/.ssh/id_rsa.pub
登录GitHub
点击右上角头像 → Settings
左侧选择 SSH and GPG keys
点击 New SSH key
粘贴公钥内容
远程地址改为
ssh://git@ssh.github.com:443/xxx.git
测试SSH over 443连接
ssh -T git@github.com → 出现 “Hi guchen66!”
git push -u origin master → 秒推成功
结论
当「代理隧道通却反复 RST」时,再换节点已无意义;
SSH 443 是 GitHub 官方中继,几乎不被 RST,可当作最后逃生通道;
整个过程零重装、零换机,仅改 SSH config 与 remote URL 即可
记录
想走 SSH(443 端口)
git remote set-url origin ssh://git@ssh.github.com:443/user/repo.git
想走 HTTP(需代理)
git remote set-url origin https://github.com/user/repo.git
.ssh/config 里的 Port 443 只对 SSH 生效,当你用 HTTPS 地址时,Git 根本不会读这个文件,
本地 .ssh/config 的影响范围
地址以 ssh:// 或 git@ 开头 → 由 .ssh/config 接管(端口、密钥、用户名)。
地址以 https:// 开头 → 完全跳过 .ssh/config,只看 http.proxy / https.proxy。
如果github突然上不去
Windows PowerShell 管理员权限执行:
注意:中文系统用 "以太网" / "WLAN",英文系统用 "Ethernet" / "Wi-Fi"。
改完立刻刷新 DNS,再开浏览器试 GitHub
netsh interface ip set dns "以太网" static 8.8.8.8
netsh interface ip set dns "WLAN" static 8.8.8.8
ipconfig /flushdns
使用bat命令打开host
@echo off
explorer %windir%\System32\drivers\etc
管理员权限修改
140.82.113.4 github.com
140.82.114.36 ssh.github.com
以后想改回来
当前 WLAN(无线网卡)的 DNS 服务器地址恢复成“自动获取”
netsh interface ip set dns "WLAN" dhcp
是Google 公共 DNS(8.8.8.8)是什么
Google 在全球任播节点提供的免费域名解析服务
特点:
– 响应快(国内虽绕路,但缓存大、命中高)
– 不劫持、不插入广告
– 支持 DNS-over-HTTPS(DoH)和 DNSSEC
地址:
– 主:8.8.8.8
– 备:8.8.4.4
– IPv6:2001:4860:4860::8888
什么时候一定要改回自动 DNS
车间/公司里有 .local / .corp / .mes 这类内网域名——它们只能由车间 DNS 解析
某些 MES、PLC 网关、打印机 Web 管理页用 “短名字”(如 http://scada1)——也依赖内网 DNS;
发现 ping 内网机器名不通,但 ping IP 正常 → 立刻改回 DHCP 让网卡拿回车间 DNS。