You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac OSX下ngrok无法连接本地localhost:3746服务器求助

解决ngrok "Failed to complete tunnel connection" 连接localhost被拒绝的问题

先拆解下你遇到的核心错误:dial tcp xx.xx.xx.xx:3746: getsockopt: connection refused——这说明ngrok云端和客户端的隧道已经打通,但本地的3746端口没有服务在监听,或者服务绑定的地址不允许ngrok访问。下面是Mac OSX上的排查和解决步骤:

1. 先确认本地服务真的在3746端口运行

打开终端执行命令,检查3746端口的监听状态:

lsof -i :3746
  • 如果返回空结果:说明你的Web服务没启动,或者启动时用了其他端口——赶紧去检查服务的配置文件/启动命令,确保它绑定的是3746端口。
  • 如果有返回结果:看LISTEN行的IP列,要是显示的是某个特定的外部局域网IP,说明服务只绑定了该IP,ngrok访问localhost时会被拒绝,需要修改服务启动参数,让它绑定0.0.0.0(监听所有网卡)或者127.0.0.1(仅本地访问)。

2. 验证本地能否正常访问服务

在浏览器输入http://localhost:3746,或者终端执行:

curl http://localhost:3746

如果本地访问都失败(比如显示连接拒绝),那问题完全出在本地服务本身,和ngrok无关——先把本地服务调通再试ngrok。

3. 检查Mac防火墙是否拦截

Mac自带的防火墙可能会阻止ngrok访问本地端口:

  • 打开「系统设置」,通过Spotlight搜索「防火墙」快速定位;
  • 确认防火墙没有阻止你的Web服务,也可以临时关闭防火墙做测试(测试完成后记得重新开启)。

4. 核对ngrok启动命令的正确性

确保你启动ngrok时指定的是正确的端口,比如:

ngrok http 3746

别手滑输错端口号,这种低级错误很容易被忽略。

5. 特殊情况:服务仅绑定IPv6地址

如果你的Web服务只绑定了IPv6的::1(localhost的IPv6地址),而ngrok默认用IPv4连接,也会出现拒绝错误。可以强制ngrok用IPv6访问:

ngrok http [::1]:3746

如果以上步骤都试过还是不行,可以补充下你的本地服务类型(比如Node.js、Python Flask、Apache等)和服务启动日志,方便进一步定位问题。

内容的提问来源于stack exchange,提问作者RedBullet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:33:00