运行ngrok http 80时出现黑屏,无法获取外部访问URL求助
ngrok 3.1.0 启动黑屏无链接且触发 "send on closed channel" panic 的解决办法
问题现象
此前运行ngrok http 80可正常暴露本地80端口,现在执行该命令后,初始启动界面显示约30秒终端黑屏,无法获取外部访问链接,终端最终显示空白。日志显示Session Status始终处于connecting状态,同时出现以下关键错误:
- 更新检查超时:
failed to check for update: Post "https://update.equinox.io/check": context deadline exceeded - 协程panic:
panic: send on closed channel(来自TLS CRL验证逻辑)
未修改过ngrok配置文件。
解决方案
1. 临时禁用更新检查
启动ngrok时添加--update=false参数,跳过更新检查流程,避免因超时触发后续异常:
ngrok http 80 --update=false
2. 关闭CRL验证
编辑ngrok配置文件(路径:/root/.config/ngrok/ngrok.yml),添加TLS配置关闭CRL验证:
tls: crl_verify: false
保存配置后重新启动ngrok。
3. 更换ngrok版本
3.1.0版本存在该CRL验证相关的已知bug,可升级至最新稳定版,或降级到3.0.x系列版本(如3.0.5),规避版本缺陷。
4. 排查网络连通性
确认本地网络可正常访问ngrok服务端:
- 测试能否访问
https://update.equinox.io - 检查是否有防火墙、代理拦截ngrok的出站请求,必要时调整网络规则允许ngrok通信
原因分析
日志中的更新请求超时会触发后续TLS证书吊销列表(CRL)验证流程的异常,由于协程通道被提前关闭,导致send on closed channel panic,这是ngrok 3.1.0版本的特定bug,结合网络环境限制时触发该问题。
内容的提问来源于stack exchange,提问作者Kadwen
相关产品推荐
相关产品推荐

