// 红队渗透 · 2025-08-03

【教程】使用 ngrok 进行临时端口映射(含警告页绕过方法)

🧰 前提条件

在这里插入图片描述 在这里插入图片描述


🔐 第一步:配置账户认证

  1. 登录 ngrok 网站,在 Dashboard 页面 获取你的 Authtoken。

    在这里插入图片描述

  2. 打开终端,执行以下命令完成身份认证绑定:

    ngrok config add-authtoken <你的-authtoken>

🚀 第二步:启动端口映射

🔸 映射本地 HTTP 服务(如 localhost:8080)

ngrok http 8080

🔸 映射 TCP 服务(如 SSH、MySQL 等)

ngrok tcp 22       # SSH
ngrok tcp 3306     # MySQL
ngrok tcp <你的端口>

⚠️ 免费用户 无法自定义公网端口,仅提供随机分配的 TCP 端口。自定义端口/域名需升级至付费账户。


⚠️ 第一次访问出现的警告页面

ngrok 免费版默认会在用户首次访问隧道链接时显示安全警告页,类似如下所示:

在这里插入图片描述

这个页面称为 interstitial warning page,目的是防止滥用、钓鱼等非法行为。


🔒 如何绕过警告页

为提高测试效率或提升用户体验,可以通过下列方式绕过该提示页:

✅ 方法一:添加请求头 ngrok-skip-browser-warning

curl -H "ngrok-skip-browser-warning: true" https://xxxx.ngrok-free.app

✅ 方法二:使用非标准 User-Agent

curl -A "MyTool/1.0" https://xxxx.ngrok-free.app

🔔 注意:

  • 警告页只能绕过,不能关闭(除非升级为付费用户)。
  • 若服务需要被嵌入到 iframe 中或对公网用户展示页面,会明显影响用户体验。

🔧 进阶配置:使用 ngrok 配置文件

建议将常用隧道配置写入 ngrok.yml 文件中,路径为 ~/.config/ngrok/ngrok.yml:

authtoken: <你的-authtoken>
tunnels:
  webserver:
    proto: http
    addr: 8000
  ssh:
    proto: tcp
    addr: 22

然后执行:

ngrok start webserver

即可自动启动已定义的 webserver 隧道。


🧩 总结

ngrok 是开发调试、内网穿透的极佳工具,特别适用于:

  • Web 服务测试
  • 局域网设备远程访问
  • 微信/钉钉回调联调
  • 快速部署接口演示

免费版虽有一些限制(如随机端口、浏览器警告页等),但通过合理配置可大幅优化体验。

如需进一步实现稳定长连接、自定义域名、自托管方案,推荐你探索:

  • frp(内网穿透利器)
  • cloudflared tunnel
  • ZeroTier + 自建代理

原文 https://blog.csdn.net/2301_79518550/article/details/149883093