ngrok如何实现内网穿透?

ngrok 是一款开源的网络隧道工具,可将本地服务(如 Web 服务器、SSH 等)安全地暴露到公网,生成临时域名供外部访问,适用于开发调试、演示、远程访问等场景,支持 HTTPS、TCP 隧道等功能。


Linux 安装 ngrok 详细步骤

步骤 1:下载 ngrok 客户端

打开终端,通过官方源下载最新版(以 64 位 Linux 为例):

cd /tmp
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz

注意

  • 其他架构设备请访问 ngrok 下载页 获取对应链接。
  • 始终从官网下载以确保安全,避免第三方篡改。

步骤 2:解压并安装

tar xvzf ngrok-v3-stable-linux-amd64.tgz  # 解压文件
sudo mv ngrok /usr/local/bin/             # 移动到系统路径
ngrok version                             # 验证安装(显示版本号即成功)

步骤 3:配置认证令牌(Authtoken)

  1. 注册 ngrok 账户(免费版可用)。
  2. 在 Dashboard 获取您的 Authtoken
  3. 终端执行:
    ngrok config add-authtoken <YOUR_AUTHTOKEN>  # 替换为实际令牌

    令牌保存在 ~/.config/ngrok/ngrok.yml,一次配置永久生效。

步骤 4:启动隧道服务

示例 1:暴露本地 Web 服务(端口 80)

ngrok http 80

示例 2:暴露 SSH 服务(端口 22)

ngrok tcp 22

运行后终端将显示公网地址(如 https://1a2b-34-56-78-90.ngrok-free.app),通过此地址即可访问本地服务。


进阶配置(可选)

设置为系统服务(Systemd)

创建服务文件:

sudo nano /etc/systemd/system/ngrok.service
```以 HTTP 隧道为例):
```ini
[Unit]
Description=Ngrok Tunnel
After=network.target
[Service]
ExecStart=/usr/local/bin/ngrok http 80
Restart=always
User=your_username  # 替换为实际用户名
[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl start ngrok
sudo systemctl enable ngrok  # 开机自启

自定义域名(付费版)

在 Dashboard 绑定域名后,启动命令添加 --domain 参数:

ngrok http --domain=yourdomain.ngrok.io 80

常见问题解决

  1. 连接失败

    • 检查 Authtoken 是否配置正确:ngrok config check
    • 确保防火墙放行 ngrok 流量:sudo ufw allow 80/tcp(按需替换端口)
  2. 服务意外停止
    使用 --log=stdout 参数查看日志:

    ngrok http 80 --log=stdout
  3. 免费版限制
    免费账户隧道会话 2 小时超时,并发连接数受限,需升级付费版解除限制。


安全注意事项

  • 🔒 勿暴露生产环境:ngrok 适用于测试,暴露数据库等高危服务可能导致攻击。
  • 🔑 启用身份验证:对敏感服务添加密码保护:
    ngrok http 80 --basic-auth="user:password"
  • 📜 遵守政策:禁止滥用隧道进行违法操作,违反将导致账户封禁。

官方文档参考

  • ngrok 官方文档
  • Linux 服务配置指南
    更新于 2025 年 10 月,适用于 ngrok v3 版本,安装前请确认官网是否有更新。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4659.html

(0)
酷番叔酷番叔
上一篇 2025年6月16日 13:26
下一篇 2025年6月16日 13:43

相关推荐

  • 测试环境分区混乱?

    环境准备阶段硬件选择最低配置:双核CPU/2GB内存/20GB存储(适用于基础服务测试)推荐配置:四核CPU/4GB内存/SSD存储(支持容器化及多服务部署)云服务器替代方案:阿里云ECS/AWS EC2(新手建议选择Ubuntu LTS镜像)Linux发行版选择- Ubuntu LTS (22.04):社区支……

    2025年6月15日
    1800
  • Linux文件无法执行?权限设置是关键

    核心原理:Linux文件权限Linux中每个文件都有三组权限(均用r、w、x表示):所有者权限:文件创建者组权限:文件所属用户组其他用户权限:系统所有其他用户x 代表可执行权限,若用户身份对应位置有 x,则该用户可执行此文件,查看文件是否可执行的4种方法使用 ls -l 命令(最常用)ls -l 文件名输出示例……

    2025年7月6日
    900
  • 如何检查QLogic HBA驱动状态?

    Linux环境下光纤存储的配置与应用指南在Linux系统中配置光纤(Fibre Channel)存储是企业级应用的核心技能,涉及硬件连接、驱动管理、多路径配置等关键技术,本指南基于Linux内核原生工具和行业最佳实践,提供可落地的操作方案,硬件准备与基础概念硬件组件HBA卡(Host Bus Adapter……

    2025年6月14日
    1400
  • 软中断如何提升系统性能?

    在Linux内核中,软中断(Softirq)是实现异步处理的核心机制,它负责高效处理网络数据包、块设备操作等对时效性要求高的任务,与硬件中断不同,软中断以内核线程形式运行,可被更高优先级的中断抢占,但不会嵌套自身,以下是其实现原理的深度解析:静态注册表Linux预定义了10种软中断类型(如网络收发包NET_RX……

    2025年6月13日
    1300
  • 为什么越努力的人越容易失败?

    在Linux系统中,线程是程序执行流的最小单元,也是实现并发编程的核心手段,与进程不同,线程共享相同的内存空间和系统资源,使得上下文切换成本更低、通信效率更高,Linux通过以下机制实现高效的线程管理:Linux线程的本质:轻量级进程(LWP)Linux内核并不直接区分”进程”和”线程”,而是将所有执行实体视为……

    2025年7月4日
    1100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信