外观
报错 net/http: TLS handshake timeout 解决方法
这个错常见于 go get、docker pull 等场景:
text
net/http: TLS handshake timeout
Get "https://...": net/http: request canceled while waiting for connection含义是和服务器建立 TLS 加密连接时超时了——通常是跨境链路太慢或被干扰。按你遇到的场景处理。
场景一:Go(go get / go mod)
最常见。根源是访问 proxy.golang.org / GitHub 慢。换 GOPROXY 国内镜像即可:
bash
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.google.cn详见 👉 GOPROXY 配置指南。若还需直连 GitHub,给 shell 或 git 配 代理。
场景二:Docker(docker pull)
拉镜像时 TLS 超时:
- Docker Hub 镜像 → 配镜像加速器;
- ghcr.io / nvcr.io → 给守护进程配代理。
完整做法见 👉 Docker 镜像加速。
场景三:git / 通用 HTTPS
git 或其他工具访问 GitHub 时 TLS 超时,基本是链路问题:
通用办法:走代理
不管哪个工具,TLS handshake timeout 的通用解就是让它走一条稳定通道(代理)。给当前终端设代理:
bash
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890Windows PowerShell:
powershell
$env:HTTPS_PROXY = "http://127.0.0.1:7890"命令行走代理的完整说明见 命令行代理配置。
为什么换镜像比延长超时更好
有些教程让你调大超时时间。但 TLS 超时的根因是链路慢/被干扰,单纯延长超时只是"等更久",体验依旧差。换国内镜像或走代理才是从根上解决。
速查
| 场景 | 首选 |
|---|---|
go get 超时 | GOPROXY 国内镜像 |
docker pull 超时 | Docker 加速器 / 代理 |
| git / 其他 HTTPS | 代理 或 SSH 443 |
| 通用 | 终端走代理 |
小结
- 先看是哪个工具报的:Go 换 GOPROXY、Docker 配加速器/代理。
- 通用解是走代理提供稳定通道。
- 别只靠"延长超时",治标不治本。
本文仅供技术学习与研究,请遵守所在国家/地区法律法规。