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

相关推荐

  • linux如何用catch

    Linux 中,可使用 trap 命令结合函数来捕获信号,

    2025年8月18日
    21900
  • 如何快速检查SELinux安全状态?

    查看 SELinux 运行状态使用 sestatus 命令sestatus关键输出:SELinux status: enabled(已启用)或 disabled(已禁用)Current mode: enforcing(强制模式)、permissive(宽容模式)或 disabledPolicy version……

    2025年7月29日
    23300
  • Linux下如何安全重启Java应用?

    重启前的关键准备备份数据与配置重要数据:如数据库连接信息、配置文件(如 application.properties),应用日志:保存当前日志(如 nohup.out)避免丢失,cp /path/to/app.jar /backup/app_$(date +%F).jar # 备份JAR文件cp nohup.o……

    2025年7月29日
    26500
  • Linux系统如何彻底卸载DB2数据库并清除残留配置?

    在Linux系统中卸载DB2数据库需要谨慎操作,确保数据安全并彻底清理残留文件,避免影响系统稳定性,以下是详细的卸载步骤及注意事项,涵盖不同场景下的操作要点,卸载前的准备工作在开始卸载前,务必完成以下准备工作,以防数据丢失或系统异常:备份数据:使用db2 backup database <数据库名&gt……

    2025年9月17日
    21200
  • Linux如何配置GRUB引导菜单及启动参数?

    Linux系统中,GRUB(Grand Unified Bootloader)是广泛使用的引导加载程序,负责在系统启动时加载内核和初始化内存盘(initrd),并允许用户选择启动的操作系统或启动模式,正确配置GRUB对于系统启动的稳定性和灵活性至关重要,以下将详细介绍Linux环境下GRUB的配置步骤和注意事项……

    2025年10月3日
    31000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信