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下MySQL命令行如何正确退出?具体操作步骤有哪些?

    在Linux系统中,使用MySQL命令行工具时,退出当前会话是常见操作,掌握多种退出方式能提升操作效率,本文将详细介绍Linux环境下退出MySQL命令行的不同方法、适用场景及注意事项,帮助用户灵活应对各种操作需求,进入MySQL命令行的前提要退出MySQL,需先了解如何进入MySQL命令行,通常使用以下命令登……

    2025年9月9日
    21700
  • 如何用Linux复制命令让效率翻倍?

    核心命令:cp(复制文件/目录)基本语法:cp [选项] 源文件 目标路径常用选项:选项作用示例-r递归复制目录(必需)cp -r dir1/ dir2/-i覆盖前提示确认(防误删)cp -i file.txt backup/-v显示复制详情(可视化过程)cp -v *.jpg /photos/-u仅复制更新的……

    2025年7月25日
    22600
  • Linux中如何修改hostname主机名?

    在Linux系统中,hostname(主机名)是用于标识网络中设备的唯一名称,它不仅方便用户识别和管理服务器,还在网络通信、日志记录等服务中起到关键作用,正确修改hostname需要区分临时修改和永久修改,并根据不同的Linux发行版调整操作步骤,同时需注意与hosts文件的关联配置,避免导致网络解析异常,ho……

    2025年10月1日
    19900
  • kali Linux安装软件的具体方法有哪些?

    Kali Linux作为专为渗透测试和安全审计设计的Linux发行版,基于Debian,其软件安装方式继承了Debian的灵活性与丰富工具,同时针对安全工具进行了优化,以下是Kali Linux中安装软件的详细方法,涵盖官方仓库、源码编译、跨平台包管理器及第三方仓库等多种途径,帮助用户高效管理工具,使用APT包……

    2025年8月23日
    26900
  • linux如何编译python

    Linux上编译Python,首先确保已安装必要的依赖库,然后下载Python源码,解压后进入目录运行`.

    2025年8月15日
    17400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信