Claude Code 终端连接失败怎么办:环境变量代理、TUN、长连接断开、登录过期与企业网络
Claude Code 在终端里提示 Connection error、fetch failed、ECONNRESET 或登录后反复要求重新认证,原因在终端不走系统代理、TUN 模式没覆盖、长连接被节点切换打断、Keychain 里的凭证过期、企业网络的证书和防火墙。本文按顺序讲判断和处理。
先确认是哪一类失败
Claude Code 的连接问题报错文案不一,大致分四类:
- 启动或发送时提示 Connection error、fetch failed、ETIMEDOUT:根本连不上,通常是终端没走代理。
- 用着用着报 ECONNRESET、socket hang up、stream ended unexpectedly:连上了但中途断,是长连接稳定性。
- 反复要求登录、提示 Unauthorized、Invalid API key:凭证问题。
- 证书相关的报错,UNABLE_TO_VERIFY_LEAF_SIGNATURE、self signed certificate:企业网络或系统证书。
基础的安装和配置见 Claude Code 使用教程,本文只处理连接失败。
第一类:终端没走代理
浏览器走的是系统代理,终端里的程序不一定走。Claude Code 是 Node.js 程序,默认直接连接,不读系统代理设置。浏览器能开 claude.ai、终端连不上,九成是这个。
两种解决方式,选一种。
环境变量
在终端里设置代理环境变量,指向客户端的本地监听端口(Clash 类默认 7890,Shadowrocket 和 Surge 有各自的端口):
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
然后在同一个终端窗口启动 Claude Code。每开一个新终端都要重新设置,想永久生效就写进 ~/.zshrc 或 ~/.bashrc。
验证:同一个终端里 curl -I https://api.anthropic.com,能返回 HTTP 响应头就通了。
注意客户端的「允许局域网连接」和端口设置要和这里一致;客户端改过端口的,用改后的。
TUN 模式
客户端开 TUN 模式后,系统所有流量都经过代理,终端程序不需要任何设置。macOS 和 Windows 的 Clash Verge、FlClash、Clash Party 都支持。
TUN 模式需要管理员权限,macOS 首次开启要授权系统扩展。开了 TUN 后仍然连不上,看 TUN 模式问题排查。
两种方式不要同时用。开着 TUN 又设了环境变量,流量会经过代理两次,偶尔出问题。
第二类:长连接中途断开
Claude Code 和 API 之间是流式长连接,一次任务可能持续几分钟到几十分钟。连接中途断了,报 ECONNRESET、socket hang up 之类。
节点自动切换
anthropic.com 的流量走了 url-test 自动选择策略组,客户端定期测速切换节点,正在进行的连接被掐断。这是最常见的原因。
处理:Clash 规则里把 Anthropic 相关域名固定到一个手动选择的节点:
DOMAIN-SUFFIX,anthropic.com,你选的节点
DOMAIN-SUFFIX,claude.ai,你选的节点
节点选延迟稳定的,优先专线。选法见 AI 节点选择。
节点不稳定
节点本身抖动丢包,长连接随时断。白天正常晚上频繁断,是晚高峰拥塞。换一个延迟稳定的节点,或专线节点。
代理客户端的空闲超时
部分客户端或代理协议对「长时间无数据」的连接有超时。Claude Code 在执行长任务时,有时几十秒没有数据往返,连接被判定空闲而关闭。
处理:换协议(Trojan、VLESS 一般没有这个问题)或换客户端,看报错是否消失。
第三类:登录和凭证
Keychain
macOS 上 Claude Code 把登录凭证存在系统 Keychain。Keychain 锁定、权限被改、或者换了终端程序(从 Terminal 换到 iTerm),都可能读不到凭证,表现为每次启动都要登录。
处理:打开「钥匙串访问」,确认登录钥匙串没有锁定;删掉 Claude Code 相关条目后重新登录一次,让它重新写入并授权当前终端程序。
会话失效
登录时用的节点在美国,之后切到了日本节点,Anthropic 检测到地区变化可能让会话失效。处理同上,固定节点。
地区不支持
登录页面提示地区不支持,是节点落地地区的问题,换到美国、日本、新加坡等支持地区的节点,见 Claude 地区不支持。
第四类:企业网络
公司网络通常有三个障碍:TLS 拦截代理、防火墙白名单、强制的公司代理。
证书错误
公司的网络设备会用自签证书拦截 HTTPS 流量,浏览器信任了公司根证书所以没问题,Node.js 有自己的证书库,不认。
处理:找 IT 要公司根证书文件(.pem 或 .crt),然后:
export NODE_EXTRA_CA_CERTS=/path/to/company-root.pem
不要用 NODE_TLS_REJECT_UNAUTHORIZED=0 这种关掉验证的办法,有安全风险。
防火墙
公司防火墙只放行白名单域名,api.anthropic.com 不在里面。要么让 IT 加白名单,要么用自己的代理绕过公司网络(手机热点加自己的机场)。
公司代理
公司强制走它的代理,和你自己的代理客户端冲突。一般的做法是让自己的客户端把公司代理设为上游,或者在公司网络之外用。
排查顺序
- 同一终端里
curl -I https://api.anthropic.com。不通,是终端没走代理,设环境变量或开 TUN。 - 通了但 Claude Code 还报错,看报错类型。证书类看企业网络;ECONNRESET 类看长连接。
- 固定节点,不走自动选择。
- 换一个延迟稳定的节点。
- 反复登录,处理 Keychain。
- 仍然不行,换客户端模式(环境变量换 TUN,或反过来)。
什么样的机场适合 Claude Code
长连接稳定、节点延迟不抖、落地在支持地区、IP 池不太挤。实际上这就是专线机场的特征。见 Claude 机场推荐。
几个具体报错对照
| 终端里看到 | 多半是 | 先做什么 |
|---|---|---|
fetch failed / ECONNREFUSED 127.0.0.1:7890 | 代理地址或端口写错,客户端没在跑 | 打开客户端确认混合端口号,重新 export |
ETIMEDOUT / 卡在 Connecting | 终端没走代理,或节点很慢 | 用 curl -I https://api.anthropic.com 验证代理是否生效 |
403 Forbidden / 地区提示 | 节点地区不被支持,常见于香港、台湾 | 换美国、日本、新加坡节点 |
401 Unauthorized / 反复要登录 | 凭证过期或 Keychain 读取失败 | 执行 /logout 再 /login,macOS 检查钥匙串访问权限 |
回答到一半 stream ended | 长连接被中断,中转节点晚高峰常见 | 换专线节点或错开时段,开 TUN 代替环境变量 |
certificate / self signed 字样 | 公司网络或安全软件做了 TLS 拦截 | 导入公司证书,或换到个人网络 |
让 Claude Code 长期稳定的配置
把代理写进 shell 配置文件(~/.zshrc 或 ~/.bashrc)而不是每次手动 export,这样新开终端窗口也会带上。给 Anthropic 相关域名(anthropic.com、claude.ai)单独建一个策略组并固定一个美国节点,避免「自动选择」在长任务中途换 IP,规则写法见 自定义分流规则。开发时段如果固定在晚高峰,优先选专线节点,原因见 晚高峰卡怎么办。
相关
常见问题
浏览器能开 claude.ai,为什么 Claude Code 连不上?
终端程序默认不走浏览器用的系统代理。需要在终端里设置 HTTPS_PROXY 环境变量指向客户端的本地端口,或者开客户端的 TUN 模式让所有流量都经过代理。
Claude Code 用着用着报 ECONNRESET 或 fetch failed,是什么原因?
长连接被中断。常见是节点在会话中自动切换、节点抖动丢包、代理客户端的空闲超时。把 anthropic.com 固定到一个稳定节点,避免 url-test 自动选择。
Claude Code 每次打开都要重新登录怎么办?
macOS 上凭证存在 Keychain,Keychain 被锁定或权限异常会读不到。解锁 Keychain、给终端授予访问权限;也可能是登录时的节点地区和当前不一致导致会话失效,固定节点。
公司网络下 Claude Code 报证书错误怎么办?
企业网络常有 TLS 拦截代理,自签证书不被 Node.js 信任。把公司的根证书通过 NODE_EXTRA_CA_CERTS 环境变量加给 Node,或者绕过公司网络用自己的代理。
怎么确认 Claude Code 的流量确实走了代理?
在同一个终端里执行 curl -I https://api.anthropic.com,看是否能返回响应头;再看代理客户端的连接面板里有没有 anthropic.com 的连接和对应节点名。两者都有就是走了。
本文为信息整理与个人经验,不构成购买建议。机场政策与软件界面可能变化,以官方为准。发现过期内容请 联系纠错。