完整的搭建内网穿透ngrok详细教程(有图有真相)

2023-05-16

如上 网上找到的都是不稳定的 还不如自己搭建一个。去问度娘了,发现了一堆。好吧,那就动手开干吧。

准备工作(其实也是硬性条件):

1.服务器一台

2.备案域名一个。(好多都说可以不备案,我也不知道真假,我的备了)

工具:

1.远程连接工具:xshell 或者 putty 。(甭管是啥 能连上好使就行 按照个人习惯选择)

2.下载工具:winscp(这是我最爱用的哈) 当然用命令也是可以的。

安装:

1.git安装

# 安装git
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的教程啥的 我这个执行完就ok了

由于ngrok是在go的基础上开发的所以先安装go(go语言完全不同 这不重要 安装好就可以)

2.安装go

我觉得服务器上下载go太慢了 所以我决定本地下载 在往服务器上传 

下载地址:https://studygolang.com/dl(我觉得这个挺好的)

下载linux版的 位数看好在下,这些细节问题一定要注意。

下载后 用winscp 上传到服务器下的 /usr/local/下

解压 

tar -zxvf go1.12.4.linux-amd64.tar.gz /usr/local/  

目录下即可看见 go 的目录

这时需要做一个软连接(为什么做 我也不知道啊 哪个大神可以指导一下)

# go的命令需要做软连接到/usr/bin  
ln -s /usr/local/go/bin/* /usr/bin/ 

做完这些 最后设置全局的环境变量

export GOROOT=/usr/local/go    
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin

使环境生效

source /etc/profile 

好了 到这 我们的go安装完了 检测安装是否安装成功

go version

go env

执行其中一个 出现对应的即可 代表安装成功

3.安装ngrok

为了查找方便 也安装到local目录下

cd /usr/local/ 

//ngrok下载地址
git clone https://github.com/inconshreveable/ngrok.git

这个地址可以git下载 再传上去 也可以fock到自己项目里

下载完成后可以看到一个 ngrok的文件夹

配置 ngrok的环境变量

export GOPATH=/usr/local/ngrok/  

#这里写你自己的域名,不要前缀,比如www.abc.club 填写abc.club (域名已备案)
export NGROK_DOMAIN="abc.club"  

4.生成ngrok证书并覆盖原有的证书

cd /usr/local/ngrok
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 

以上这个命令是拷来的 不必介意 就是生成证书的

覆盖证书 以下命令分着打 打完每一个 会让你确定 按 y 就可以

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的目录

cd /usr/local/ngrok/  

执行生成服务端 其中amd64代表64位的linux系统 如果是32位的 改为:GOARCH=386 

GOOS=linux GOARCH=amd64 make release-server

生成成功后 会在ngrok的bin下有一个ngrokd文件夹 即代表成功

生成客户端

和服务端一样 

cd /usr/local/ngrok/  
GOOS=windows GOARCH=amd64 make release-client

会在ngrok的bin下有一个windows_amd64文件夹 即代表成功

下面是不同系统生成不同客户端的版本 替换GOODS 和GOARCH的值即可

#Linux 平台 32 位系统:GOOS=linux GOARCH=386
#Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
#Windows 平台 32 位系统:GOOS=windows GOARCH=386
#Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
#MAC 平台 32 位系统:GOOS=darwin GOARCH=386
#MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
#ARM 平台:GOOS=linux GOARCH=arm

服务端的启动

在ngrock下执行

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abc.club" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"

参数说明:
#-domain 访问ngrok是所设置的服务地址生成证书时那个
#-httpAddr http协议端口 默认为80
#-httpsAddr https协议端口 默认为443 
#-tunnelAddr 通道端口 默认4443

 

一定要注意 domain 代表 域名 那么这个域名就是之前你定义的环境变量的域名 千万不要错。

 

启动成功显示:

 

可以看出 监听80端口 443 端口 4443端口 并且30秒执行一次监听 启动成功

二级域名的映射设置

这个 跟简单 但很重要如下

用泛解析 解析一级域名 3级的还没研究  按照上面的解析就可以

客户端的启动

用winscp将生成的windows_amd64拉倒本地

里面只有一个ngrok.exe程序

同目录下新建ngrok.cfg文件 文件类型可自定义 但是执行时注意一致

ngrok.cfg内容

server_addr: "abc.club:4443"  
trust_host_root_certs: false  

server_addr: "abc.club:4443" 其中 abc.club还是你自己设置的那个域名 4443是服务区启动时的监听端口 保持一致 (改就都改 不改就不要动)

客户端有俩种启动方法:

1.cmd到windows_amd64根目录下

直接执行以下命令

ngrok -config=./ngrok.cfg -subdomain=test 8080

#参数说明
ngrok.cfg 刚才新建的文件 
-subdomain=test test:穿透的域名前缀 
8080 :穿透的域名映射端口

启动

代表成功 访问分配的域名即可

2.写一个.bat的脚本

 

 

boom.bat的内容

 

@echo OFF
color 0a
Title boom Ngrok启动工具
Mode con cols=109 lines=30
:START
set /p clientid=   请输入前缀:
echo.
set /p port=   请输入端口:
echo.
ngrok -config=ngrok.cfg -subdomain %clientid% %port%
PAUSE
goto TUNNEL


简单些 也可以弄一些图案什么的 根据个人喜好

访问分配的域名即可


图形界面

项目启动后 访问127.0.0.1:4040或者localhost:4040

将ngrok设置为系统服务 并且开机自启

编辑

vim /etc/rc.d/init.d/ngrok

ngrok内容

#!/bin/bash

#chkconfig: - 99 01

#description:ngrok  


case "$1" in
	start)
	echo "start ngrok service.."
	cd /usr/local/ngrok/
	setsid ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abc.club" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" 
	;;
        *)
        exit 1
        ;;
esac

###参数说明:
### cd /usr/local/ngrok/:进入ngrok目录
### setsid:开始没有这个 结果关闭窗口 发现服务停掉了 加上目前好用
### setsid ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abc.club" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" :启动ngrok服务端命令

给该配置文件权限

chmod 755 ngrok

注册为系统服务

chkconfig --add  ngrok

然后查看是否添加成功

chkconfig

 

启动

service ngrok start

若能出现和之前直接打命令出现的监听30s界面 则添加成功

设置为开机自启

再添加为系统服务后 ngrok状态都是off 所以需要设置为开机自启 

systemctl enable ngrok.service //加入开机启动
systemctl daemon-reload  //重新加载配置文件

重启服务器 直接开启客户端检测 

注意事项

服务端 启动成功 客户端连不上:

是因为 防火墙 端口没有开放443 4443 8080 等 都开放一下

开放后可以关闭防火墙 没什么大用 

开了之后 还是连不上 这就需要去云服务器端设置安全组的入站规则:

 

设置好就好了  搭建的还算可以 没有太多的问题 一路很顺

码字码图不易 且看且珍惜

 如有问题 欢迎提出指导 谢谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

完整的搭建内网穿透ngrok详细教程(有图有真相) 的相关文章

随机推荐

  • Linux Ubuntu16 网络配置

    1 首先确认网络适配器是桥接模式 虚拟机 gt 设置 gt 网络适配器 gt 桥接 自定义的 VMnet0 2 配置桥接网卡 编辑 gt 虚拟网络编辑器 N gt 更改设置 xff0c 添加Vmnet0 如果可以点击添加网络 xff0c 点
  • AIGC和ChatGPT的区别

    AIGC和ChatGPT的区别主要在于 xff1a AIGC是一个广泛的概念 xff0c 包括多种类型的内容生成 xff1b ChatGPT是一个具体的产品 xff0c 只涉及文本生成 AIGC可以应用在多个领域和场景 xff1b Chat
  • 6S管理的24个常用工具、10大要点

    6S管理就是整理 xff08 SEIRI xff09 整顿 xff08 SEITON xff09 清扫 xff08 SEISO xff09 清洁 xff08 SEIKETSU xff09 素养 xff08 SHITSUKE xff09 安全
  • 二进制位运算

    http blog csdn net gzu imis article details 20078479 1 原码 反码 和 补码 二进制位元算包括按位与 按位或 按位异或 取反 左移以及右移这几种运算 xff0c 运算都使用补码 xff0
  • python中的pow()函数解释

    Python中pow xff0c 里面可以有两个或三个参数 xff0c 它们的意义是完全不同的 1 pow x y 这个是表示x的y次幂 gt gt gt pow 2 4 16 gt gt gt 2 pow x y z xff1a 这个是表
  • javascript中的显示和隐藏(display属性)

    lt DOCTYPE HTML gt lt html gt lt head gt lt meta http equiv 61 34 Content Type 34 content 61 34 text html charset 61 gb2
  • Python中的图像处理

    http www ituring com cn tupubarticle 2024 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识 xff0c 将通过大量示例介绍处理图像所需的 Python 工具包 xff0c 并介绍用
  • ubuntu中aptitude工具的意思

    aptitude xff1a xff08 Debian系统的包管理工具 xff09 aptitude与 apt get 一样 xff0c 是 Debian 及其衍生系统中功能极其强大的包管理工具 与 apt get 不同的是 xff0c a
  • 什么是微服务

    一 微服务介绍 1 什么是微服务 在介绍微服务时 xff0c 首先得先理解什么是微服务 xff0c 顾名思义 xff0c 微服务得从两个方面去理解 xff0c 什么是 34 微 34 什么是 34 服务 34 xff0c 微 狭义来讲就是体
  • 三、Docker:命令

    其他文章 xff1a 一 Docker xff1a 概述 二 Docker xff1a 安装 三 Docker xff1a 命令 四 Docker xff1a 可视化管理 五 Docker xff1a 镜像 xff08 image 六 Do
  • mysql group by 报错Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated c

    当使用group by的语句中 xff0c select后面跟的列 xff0c 在group by后面没有时 xff0c 会报以下错误 xff1a Expression 2 of SELECT list is not in GROUP BY
  • Opencv快速入门(C++版),新手向

    Opencv快速入门 C 43 43 版 xff09 前言1 图像的读取与显示所使用的API接口 xff1a 代码演示 xff1a 2 图像色彩空间转换所使用的API接口 xff1a 代码演示 xff1a 3 图像对象的创建与赋值所使用的A
  • 前台解析jwt token 前后端分离 ant design pro

    前言 在如今得环境下 xff0c 越来越多得项目采用微服务 xff0c 前后端分离项目 优点在于同时开发 xff0c 分开部署 缺点在于需要约定的太多 xff0c 导致前后端联调产生分歧 就标题而言 xff0c 解决前端antd 接收后台返
  • win10 双击启动nacos报错 Unable to start web server...... Unable to start embedded Tomcat

    1 遇到的问题 win10双击启动nacos报错 2 分析 从启动cmd开始查看 发现 启动模式为集群模式 定位成功 3 解决 修改startup中启动模式 重新启动 成功
  • IDEA 远程debugger SpringBoot项目 超赞!!!

    如题哦 xff0c 项目发布到服务器上后 xff0c 每天被不同的bug所困扰 强大的idea超出你的想象 xff0c 强大到可以远程debugger xff0c 就和在本地一样一样的 进入正题 前提概要 线上即服务器代码必须与本地一致 x
  • git提交时 # Please enter the commit message for your changes. Lines starting # with ‘#‘ will be ignored

    问题 xff1a Please enter the commit message for your changes Lines starting with 39 39 will be ignored and an empty message
  • canal 修改配置信息后监听不到mysql数据并报错can‘t find start position for example

    原由 xff1a 数据库地址变化 canal 需要修改监听 问题 xff1a 修改配置信息后重启canal 但并无监听到数据库信息变化 分析 xff1a canal 与数据库之间断层 xff0c 导致信息传输失败 解决 xff1a xff0
  • AI那点事儿

    从古至今 xff0c 改朝换代 一代崛起 xff0c 就标志着一代的灭亡 AI的兴起 xff0c 让无数程序梦想客死他乡 无论是学者还是技术科研者 xff0c 无一不在说 xff0c AI的时代到了 然而 xff0c 我们扣心自问 xff0
  • win7 配置JDK环境变量

    第一步 xff1a 安装jdk 8u101 windows x64 exe xff0c 路径为默认路径 xff0c 一直下一步直到完成安装 安装最好不要修改安装路径 xff0c 防止自己找不到 第二步 xff1a 设置环境变量 xff1a
  • 完整的搭建内网穿透ngrok详细教程(有图有真相)

    如上 网上找到的都是不稳定的 还不如自己搭建一个 去问度娘了 xff0c 发现了一堆 好吧 xff0c 那就动手开干吧 准备工作 xff08 其实也是硬性条件 xff09 xff1a 1 服务器一台 2 备案域名一个 xff08 好多都说可