首页/网络/常用端口速查/9229 Node.js Inspector 调试口

9229 Node.js Inspector 调试口

Node.js --inspect 调试端口:DevTools 断点与堆分析入口;无任何认证,绝不允许监听 0.0.0.0。

常用端口速查网络更新于 2026-10-13

Node 调试协议口

9229 是 Node.js 调试器(Inspector)的默认端口:启动时加上调试参数,进程就会在这个端口上提供 DevTools 协议接口,支持断点、单步、性能分析与堆快照,浏览器通过 WebSocket 与之通信。这个接口没有任何认证,能连上就等于能在进程里执行任意代码,因此它属于绝不允许对外监听的端口类型;较新版本的 Node 已默认只绑定本机地址。

基本信息

服务Node.js Inspector(调试协议)
协议TCP/HTTP 与 WebSocket(9229)
用途断点调试、性能分析与堆快照
启动方式node --inspect 或 --inspect-brk
暴露要求仅本机;远程调试应经隧道

典型使用场景

  • 本地调试:启动开发进程并在浏览器开发者工具中打断点
  • 首行断点:用暂停模式等待调试器接入,便于排查启动即崩溃
  • 内存问题:抓取堆快照分析持续增长的对象
  • 容器内调试:把端口通过隧道映射到本机,而不是直接对外监听
  • 安全排查:巡检生产容器是否误带调试参数启动

启动参数对照

参数行为使用建议
--inspect启动调试并继续运行适合已在运行的服务
--inspect-brk暂停等待接入适合排查启动阶段问题
--inspect=主机:端口指定绑定与端口仅绑定回环地址
--inspect-port只改端口不改地址避免与既有端口冲突

安全调试方式

安全调试方式
# 只绑定本机地址启动
node --inspect=127.0.0.1:9229 app.js
# 需要远程调试时先建隧道,再在本地浏览器接入
ssh -L 9229:127.0.0.1:9229 user@srv
# 巡检:确认是否有进程把调试口暴露在全部接口
ss -lntp | grep 9229
# 查看容器启动命令里是否带了调试参数
docker ps --format '{{.Names}} {{.Command}}' | grep inspect
调试协议的接口清单可以从根路径读取:返回内容里包含 WebSocket 调试地址。这也意味着只做端口探测就能确认目标是不是 Node 调试口,排查误报时很有用,但在非自有资产上不应主动探测。
把调试口暴露在容器或宿主机的外网接口上,等价于给运行时留了一个无认证的代码执行入口:攻击者可以直接在进程里执行脚本、读取环境变量中的凭据。任何情况下都不要在生产环境用监听全部接口的调试参数。

生产巡检要点

  • 检查容器启动参数与编排文件是否残留调试参数
  • 检查进程实际绑定地址而非仅看端口是否开放
  • 把调试端口纳入端口巡检清单,出现即告警
  • 远程调试统一走隧道,不占用对外监听

易错点

  • 生产容器带着调试参数监听全部接口启动:等于开放无认证的代码执行入口
  • 以为改了端口就安全:只要绑定地址仍是对外接口,风险不变
  • 调试参数写死在镜像启动脚本里:后续所有实例默认带病上线
  • 用防火墙挡住却不在巡检中体现:策略变更新增放行后无人察觉

数据来源与参考

  • Node.js 官方文档(--inspect 9229)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌