新闻资讯

ngrok 怎么用 centos

2025-03-18

在 CentOS 系统中使用 ngrok,可按以下步骤进行操作。

首先,确保系统安装了必要的依赖包。通过 SSH 连接到 CentOS 服务器,以 root 用户身份执行命令:
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++
这些依赖包用于后续安装 git 和编译 ngrok。安装完成后,下载并安装 git,执行命令:
wget https://www.kernel.org/pub/software/scm/git/git-2.16.2.tar.gz
tar zxvf git-2.16.2.tar.gz
cd git-2.16.2
./configure --prefix=/usr/local/git
make install
rm git-2.16.2.tar.gz -y
安装完成后,将 git 的可执行文件路径添加到系统环境变量中,编辑 “/etc/profile” 文件,在文件末尾添加:
export PATH=$PATH:/usr/local/git/bin
执行 “source /etc/profile” 使环境变量生效。

由于 ngrok 是基于 Go 语言开发的,接下来需安装 Go 语言环境。前往 Go 语言官网下载适合 CentOS 系统的安装包,假设下载的是 “go1.12.4.linux-amd64.tar.gz”(根据实际版本替换),执行以下命令进行安装:
wget https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz
tar -zxvf go1.12.4.linux-amd64.tar.gz -C /usr/local/
安装完成后,设置 Go 语言的环境变量,编辑 “/etc/profile” 文件,添加如下内容:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin
再次执行 “source /etc/profile” 使环境变量生效。通过执行 “go version” 命令,若能正确输出版本信息,则表示 Go 语言安装成功。
接下来安装 ngrok,克隆 ngrok 的源代码仓库,执行命令:
git clone https://github.com/inconshreveable/ngrok.git
克隆完成后,进入 ngrok 目录,执行以下命令生成证书(假设使用的域名为 “yourdomain.com”):
export NGROK_DOMAIN="yourdomain.com"
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
生成证书后,将其覆盖到 ngrok 相应目录,执行:
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
然后编译生成 ngrok 服务端和客户端,执行命令:
GOOS=linux GOARCH=amd64 make release-server
GOOS=linux GOARCH=amd64 make release-client
编译完成后,在 “bin” 目录下会生成 “ngrokd”(服务端程序)和 “ngrok”(客户端程序)。
若要启动 ngrok 服务端,在 ngrok 目录下执行:
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="yourdomain.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"
其中,“-domain” 指定域名,“-httpAddr” 和 “-httpsAddr” 分别是 http 和 https 协议的转发端口,“-tunnelAddr” 是隧道端口。

在客户端使用时,将生成的 “ngrok” 客户端程序复制到需要穿透的 CentOS 设备上,执行 “ngrok -config = 配置文件路径 http 本地服务端口”(配置文件需根据实际情况编写,指定服务端地址等信息),即可实现内网穿透。


拓展阅读:
-如何在 CentOS 中检查端口是否被占用:可使用netstat -tunlp | grep 端口号命令,该命令会列出所有正在使用指定端口的进程信息,包括进程 ID 和进程名称,若有输出结果,则表示该端口已被占用。也可以使用lsof -i :端口号命令,同样能获取占用端口的进程相关信息。
-Go 语言项目工作目录(GOPATH)的作用:GOPATH 指定了 Go 语言项目的工作空间,在该目录下,Go 语言工具会查找项目的源代码、依赖包以及编译生成的二进制文件等。通常,GOPATH 目录下包含src(存放源代码)、pkg(存放编译后的包文件)和bin(存放编译生成的可执行文件)三个子目录,合理设置 GOPATH 有助于组织和管理 Go 语言项目。
-在 CentOS 中配置防火墙规则开放端口:对于 CentOS 系统,常用的防火墙工具是 firewalld。要开放端口,可执行firewall-cmd --zone=public --add-port=端口号/协议 --permanent命令,例如开放 80 端口,命令为firewall-cmd --zone=public --add-port=80/tcp --permanent,其中--permanent参数表示设置永久生效,执行完命令后,需重启防火墙使设置生效,命令为firewall-cmd --reload 。

新闻资讯
热门专题
最新专题
友情链接