在现代网络开发与运维工作中,将本地运行的服务安全地暴露到公网,以便进行测试、演示或集成,是一个常见的需求,ngrok正是为此而生的一款强大工具,它作为一个反向代理,能够为你本地的服务器(如Web服务器、API接口、SSH服务等)创建一个安全的公共隧道,使得外网可以通过一个临时的公网域名或端口直接访问你本地计算机上的服务,在像CentOS 6这样的老旧操作系统上部署和配置ngrok,可能会遇到一些特有的挑战,本文将详细介绍如何在CentOS 6系统上顺利安装、配置并使用ngrok。

准备工作
在开始安装之前,请确保你的CentOS 6服务器已经准备就绪,并且具备以下基本条件:
- 拥有root或sudo权限:后续的安装和配置操作需要对系统文件进行写入和修改。
- 网络连接:服务器必须能够访问互联网,以便下载ngrok的安装包。
- 基础工具:确保系统中已安装
wget(用于下载文件)和tar(用于解压),如果没有,可以通过以下命令安装:sudo yum install -y wget tar
建议你注册一个ngrok账户(免费即可),注册后,你可以在Dashboard页面获取到一个Authtoken,使用这个token可以让你获得更长的在线时间、更多的隧道连接以及管理隧道配置的权限。
下载与安装ngrok
ngrok的官方安装方式非常简洁,因为它主要提供了一个单一的二进制可执行文件,对于Linux系统,我们通常下载适用于amd64架构的版本。
-
获取下载链接:访问ngrok的官方下载页面,找到适合Linux 64位的版本,其下载链接通常遵循固定的格式,你可以使用以下命令直接下载最新稳定版(ngrok v3):
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz -O ngrok.tgz
-
解压文件:下载完成后,使用
tar命令解压压缩包。tar -xzf ngrok.tgz
-
移动并配置执行权限:解压后会得到一个名为
ngrok的文件,为了能在系统任何位置都能方便地使用它,我们通常将其移动到/usr/local/bin目录下,并赋予其执行权限。sudo mv ngrok /usr/local/bin sudo chmod +x /usr/local/bin/ngrok
-
验证安装:你可以在终端的任何目录下输入以下命令来验证ngrok是否安装成功。

ngrok version
如果屏幕上显示了ngrok的版本号,例如
ngrok version 3.x.x,那么恭喜你,安装已经完成。
配置与基础使用
安装完成后,下一步是进行配置并启动你的第一个隧道。
-
配置Authtoken:将你从ngrok Dashboard获取的Authtoken配置到客户端中,这一步对于免费用户尤为重要,可以避免频繁的连接中断。
ngrok config add-authtoken YOUR_AUTH_TOKEN_HERE
请将
YOUR_AUTH_TOKEN_HERE替换为你自己的真实token。 -
启动HTTP隧道:假设你的本地Web服务器运行在80端口,你可以使用以下命令来创建一个公网HTTP隧道:
ngrok http 80
执行后,ngrok会启动并显示一个控制台界面,其中包含了至关重要的信息:
字段 示例 说明 Session Status online 表示隧道连接状态正常 Account Your Plan (e.g., Free) 显示你的账户类型 Version x.x 客户端版本 Region United States (us-cal-1) 隧道所在的服务器区域 Web Interface http://127.0.0.1:4040 本地Web管理界面地址 Forwarding https://random-string.ngrok.io->http://localhost:80公网地址和它映射的本地地址 你只需将浏览器指向
https://random-string.ngrok.io(地址是动态生成的),就可以访问到你本地80端口上运行的服务了。
常见问题与解决方案
在CentOS 6上使用ngrok时,最常见的问题源于系统环境的陈旧。
问题:glibc版本过低
当你尝试运行下载的ngrok时,可能会遇到类似/lib64/libc.so.6: version 'GLIBC_2.14' not found的错误,这是因为CentOS 6自带的glibc库版本较低(通常是2.12),而最新版的ngrok是为更高版本的glibc编译的。
解决方案:
- 首选方案(尝试兼容版本):ngrok v2版本对旧系统的兼容性更好,虽然官方已不再积极维护v2,但你仍然可以从一些归档网站或GitHub的release页面找到
ngrok-v2-...-linux-amd64.zip的下载链接,下载v2版本后,解压并按照上述步骤安装,通常可以正常运行。 - 备用方案(自行编译或寻找社区版本):如果v2也无法满足需求,可以考虑在CentOS 6上从源码编译一个兼容的版本,但这需要较高的技术能力,更现实的方法是寻找社区中针对旧系统(如CentOS 6/7)编译的第三方ngrok版本。使用第三方二进制文件存在安全风险,请务必来源可信。
高级配置与注意事项
- 配置文件:对于需要长期稳定运行的隧道,手动启动命令并非最佳选择,ngrok支持通过配置文件(
~/.config/ngrok/ngrok.yml)来定义隧道,你可以在这个YAML文件中预设所有隧道的协议、端口、子域名等参数,然后使用ngrok start --all或ngrok start <tunnel_name>来批量启动。 - 系统过时警告:必须强调的是,CentOS 6已于2020年11月停止官方支持(EOL),不再接收安全更新和补丁,在生产环境中继续使用它会带来严重的安全风险,如果你的条件允许,强烈建议将系统迁移到受支持的现代Linux发行版,如CentOS Stream、Rocky Linux或AlmaLinux,本文提供的方案仅适用于因特殊原因必须维护CentOS 6旧环境的情况。
相关问答FAQs
Q1: 为什么在CentOS 6上直接运行最新版ngrok会报错,提示“GLIBC_2.14 not found”? A1: 这个错误的根本原因是CentOS 6系统自带的C语言库(glibc)版本太旧,最新版的ngrok应用程序在编译时链接了较新版本的glibc库(如2.14或更高),而CentOS 6通常只提供2.12版本,当程序启动时,操作系统无法找到它依赖的新版库文件,从而导致运行失败,解决方案是寻找并安装一个与旧版glibc兼容的ngrok版本,例如ngrok的v2版本,或是由社区为老系统专门编译的版本。
Q2: ngrok生成的公网地址是固定的吗?我能否自定义域名?
A2: 对于免费账户,ngrok每次启动隧道时生成的公网地址(如random-string.ngrok.io)都是随机的、临时的,一旦ngrok进程退出,该地址就会失效,如果你需要一个固定的、易于记忆的域名,ngrok提供了付费套餐,付费用户可以绑定自己的自定义域名(如tunnel.yourdomain.com),或者使用ngrok提供的 Reserved Domains 功能,来获得一个固定的二级域名地址,确保每次启动都使用同一个URL。