Ubuntu18.04下Anaconda执行conda update报HTTP连接失败及SSL错误如何解决?
问题根因
[SSL: WRONG_VERSION_NUMBER]错误本质是SSL握手阶段接收到了非预期的HTTP格式响应,和证书合法性校验无关。这也是为什么执行conda config --set ssl_verify false后问题依然存在的原因——该配置仅跳过证书合法性校验,不会修正握手层面的协议不匹配问题。常见诱因有两类:代理协议配置错误、默认官方源无法直连。
分步解决方案
1. 优先排查代理配置问题
这是该错误最高发的诱因:
- 执行
env | grep -i proxy查看当前系统环境变量中是否存在http_proxy/https_proxy/all_proxy相关的代理配置 - 临时清空所有代理环境变量后重试更新命令:
unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY conda update conda - 如果清空代理后可以正常更新,说明是代理配置错误:
- 注意不要把代理配置写成
https://开头的代理地址——代理本身是通过HTTP CONNECT方法建立HTTPS隧道的,以本地127.0.0.1:7890端口的代理为例,正确的conda代理配置命令为:conda config --set proxy_servers.http http://127.0.0.1:7890 conda config --set proxy_servers.https http://127.0.0.1:7890
- 注意不要把代理配置写成
2. 替换默认源为国内可直连的镜像
如果清空代理后依然无法连接官方源repo.anaconda.com,说明当前网络环境无法直连Anaconda官方仓库,可直接替换默认源解决:
- 移除默认的官方源配置:
conda config --remove channels defaults - 添加国内公开的Anaconda镜像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/ conda config --set show_channel_urls yes - 清理之前缓存的错误索引,再重试更新:
conda clean -i conda update conda
3. 连通性验证
如果操作后依然报错,可通过curl命令排除网络层面的问题:
执行curl -I https://repo.anaconda.com/pkgs/main/linux-64/current_repodata.json,如果curl同样返回SSL版本不匹配的错误,说明问题出在虚拟机网络路由、代理配置层面,和conda本身配置无关,优先检查虚拟机的网络模式(NAT/桥接)的连通性即可。
内容的提问来源于stack exchange,提问作者Haribo
相关产品推荐
相关产品推荐

