Skip to content

报错 net/http: TLS handshake timeout 解决方法

这个错常见于 go getdocker 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:7890

Windows 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 配加速器/代理。
  • 通用解是走代理提供稳定通道。
  • 别只靠"延长超时",治标不治本。

本文仅供技术学习与研究,请遵守所在国家/地区法律法规。

本站为技术学习交流站点,与 GitHub, Inc. 无任何隶属或官方关系。所有内容仅供技术研究与学习,请遵守所在国家/地区的法律法规。