Ngrok-内网穿透
部分内容原文地址:
CSDN:STU2020:简单记一下ngrok内网穿透入门步骤(可以直接使用ip,不一定要域名)
CSDN:梦幻逝水:10分钟教你搭建自己的ngrok服务器
CSDN:keepggoing:阿里云搭建ngrok实现内网穿透
简书:philoZhe:内网穿透 ngrok 服务器搭建与坑点
OSCHINA:YunOu:CentOS7.4 搭建ngrok 内网穿透
简书:前端_逗叔:Ngrok搭建内网穿透–Centos 7.x
Ngrok内网穿透实现远程桌面
内网穿透步骤
- 安装go语言环境并配置环境。
- 下载ngrok源码(可上传源码或安装git下载源码 yum install git)
- 生成证书(本地生成)
- 用新证书替换旧证书
- 编译源码
- 生成对应客户端(window,Mac)
- 启动服务端
- 客户端配置、启动
- 启动本地web项目
- 大功告成,访问公网ip或 域名
1、安装go语言环境并配置环境
下载go语言环境:
wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz
然后解压:
tar -zxvf go1.8.linux-amd64.tar.gz
配置环境:vi /etc/profile:
export GOROOT=你的go解压地址
export PATH=$PATH:$GOROOT/bin
查看go是否安装成功:
go version
2、下载ngrok源码(可上传源码或安装git下载源码 yum install git)
安装git:
yum install git
# 下载源码
git clone https://github.com/inconshreveable/ngrok.git
3、生成证书(本地生成)
进入下载好或解压好的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
4、用新证书替换旧证书
在下载好或解压好的ngrok目录下 执行覆盖替换。
cp base.pem assets/client/tls/ngrokroot.crt
5、编译源码
在下载好或解压好的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、生成对应客户端
编译好源码后,生成客户端(本地电脑使用的)
在下载好或解压好的ngrok目录下 执行命令。
GOOS=windows GOARCH=amd64 make release-client (windown系统)
7、启动服务端
在下载好或解压好的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” 指定)。)
8、客户端配置、启动
将生成好的客户端(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 启动客户端
9、启动本地项目、访问公网ip或域名
10、其他
服务器上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
来源:CSDN
作者:爱是与世界平行
链接:https://blog.csdn.net/An1090239782/article/details/104295657