简单记一下ngrok内网穿透入门步骤(可以直接使用ip,不一定要域名)

本文详细介绍如何通过安装go语言环境、下载ngrok源码、生成及替换证书、编译源码等步骤,搭建自己的ngrok服务器实现内网穿透。包括生成客户端、启动服务端与客户端、启动本地项目及访问公网的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内网穿透步骤:

1、安装go语言环境并配置环境。
2、下载ngrok源码(可上传源码或安装git下载源码 yum install git)
3、生成证书(本地生成)
4、用新证书替换旧证书
5、编译源码
6、生成对应客户端(window,Mac)
7、启动服务端
8、客户端配置、启动
9、启动本地web项目
10、大功告成,访问公网ip或 域名

一、安装go语言环境并配置环境。

1、下载go语言环境:
wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz
2、解压:
tar -zxvf go1.8.linux-amd64.tar.gz
3、配置环境:vi /etc/profile 在profile里加上这两句话
export GOROOT=你的go解压地址
export PATH=$PATH:$GOROOT/bin
4、查看go是否安装成功:
go version

二、下载ngrok源码(可上传源码或安装git下载源码 yum install git)

1、安装git: yum install git   (手动上传源码可省略)
2、找一个合适的目录下载ngrok源码:
git clone https://github.com/inconshreveable/ngrok.git  (手动上传源码可省略)

三、生成证书(本地生成)

进入下载好或解压好的ngrok目录下 依次执行命令	
	openssl genrsa -out base.key 2048   (无脑复制粘贴)
	openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=xx.xx.xx.xx" -out base.pem     (xx.xx.xx.xx为ip或域名)
	openssl genrsa -out server.key 2048		(无脑复制粘贴)
	openssl req -new -key server.key -subj "/CN=xx.xx.xx.xx" -out server.csr	(xx.xx.xx.xx为ip或域名)
	echo subjectAltName = IP:xx.xx.xx.xx > extfile.cnf    (xx.xx.xx.xx为ip或域名)
	openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -extfile extfile.cnf -days 10000 -out server.crt

四、用新证书替换旧证书

在下载好或解压好的ngrok目录下 执行覆盖替换
	cp base.pem assets/client/tls/ngrokroot.crt

五、编译源码

在下载好或解压好的ngrok目录下 执行编译(有点久,几分钟)
	make release-server release-client
	(使用 ip 做域名时,随机生成的子域名导致地址错误 例如http://92832de0.1.1.1.1 -> localhost:80:
		解决办法就是改源码,去掉随机生成 ,在下载好或解压好的ngrok目录下找到src/ngrok/server/tunel.go文件
			修改源码位置:
			// src/ngrok/server/tunel.go  #89 行
			// Register for random URL
   			 t.url, err = tunnelRegistry.RegisterRepeat(func() string {
    		 return fmt.Sprintf("%s://%x.%s", protocol, rand.Int31(), vhost)
    		}, t)
    		删掉 【%x.】 【rand.Int31(),】 以及该文件第一行引入的 【math/rand】,重新编译出服务端与客户端即可。
	)

六、6、生成对应客户端(window,Mac)

编译好源码后,生成客户端(本地电脑使用的) 
在下载好或解压好的ngrok目录下 执行命令
	GOOS=windows GOARCH=amd64 make release-client  (windown系统)
	GOOS=darwin GOARCH=amd64 make release-client  (mac系统)

七、启动服务端

在下载好或解压好的ngrok目录下 执行命令启动
	./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="xx.xx.xx.xx" -httpAddr=":80" -httpsAddr=":443"    
(xx.xx.xx.xx为ip或域名,httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。)

八、客户端配置、启动

将生成好的客户端(ngrok目录下 bin/windows_amd64/ngrok.exe),下载到本地发到自己喜欢的目录下
1、在本地同级目录下创建配置文件ngrok.cof内容如下:
	server_addr: "xx.xx.xx.xx:4443"  (xx.xx.xx.xx为ip或域名)
	trust_host_root_certs: false  
2、在本地同级目录下创建启动脚本startup.bat 内容如下:
	ngrok -config=ngrok.cfg -log=ngrok.log  8080   (8080为本地项目的端口可以任意改)
3、双击startup.bat 启动客户端

九、启动本地项目

自己操作,注意端口为上面的8080  可以任意改

十、访问公网ip或域名。

访问公网ip或域名就会转发到本地的8080项目上

十一、其他

服务器上ngrok后台运行
	1、安装 yum install screen
	2、screen -S ngrok( -S后面的名字可以随便取)
	3、运行ngrok启动命令【./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="xx.xx.xx.xx" -httpAddr=":80" -httpsAddr=":443" 】
	4、直接关掉ssh窗口
	4、关闭ps -ef|grep screen 然后用kill

参考地址

https://blog.csdn.net/yjc_1111/article/details/79353718 (10分钟教你搭建自己的ngrok服务器)
https://blog.csdn.net/u010444106/article/details/80457985 (阿里云搭建自己的ngrok服务-实现内网穿透)
后面两个很有用
https://www.jianshu.com/p/d308b92e58ea(内网穿透 ngrok 服务器搭建与坑点)
https://blog.csdn.net/min19900718/article/details/87920254(x509: cannot validate certificate for 10.30.0.163 because it doesn't contain any IP SANs)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值