完整的搭建内网穿透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详细教程(有图有真相) 的相关文章

  • C#表达式树解析步骤

    C 表达式树是一种将 C 代码表示为对象树的方式 xff0c 它提供了一种在运行时动态构建和执行代码的能力 表达式树可以用于构建 LINQ 查询 动态生成代码 ORM 框架等场景 表达式树的解析过程可以分为两个步骤 xff1a 构建表达式树
  • 关于ConstraintLayout自适应高度遇到的坑

    关于ConstraintLayout自适应高度遇到的坑 记录下来 android layout height 61 34 wrap content 34 为了缩减嵌套层及采用了ConstraintLayout作为dialog布局 但是发现d
  • FluentValidation使用示例

    FluentValidation 是一个 NET 平台下的验证库 xff0c 用于验证对象的属性是否符合预期的规则 它提供了一种简洁的方式来编写验证规则 xff0c 支持链式编程 xff0c 可以轻松地构建复杂的验证逻辑 在 NET 6 中
  • SQLServer创建索引的5种方法

    前期准备 xff1a span class hljs operator span class hljs keyword create span span class hljs keyword table span Employee ID s
  • 正则表达式(匹配第一个花括号)

    学习正则 xff0c 工作中使用正则让我对 有了新的认知 xff1a 正则中 匹配输入字符串的开始位置 xff0c 除非在 方括号表达式中使用 xff0c 此时表示不接受该字符集合 废话不多说 xff0c 直接看栗子吧 xff0c 如下图所
  • windows驱动注册中断服务程序

    一个驱动程序的标准中断服务例程的必要功能和建立一个ISR的需求 1 1 ISR需求 一个产生中断的物理设备的所有驱动程序必须有一个ISR 中断服务例程由内核定义如下 xff1a span class hljs built in BOOLEA
  • Android Studio 出现“Cannot resolve symbol” 解决办法

    一 Android Studio 无法识别同一个 package 里的其他类 xff0c 将其显示为红色 xff0c 但是 compile 没有问题 鼠标放上去后显示 Cannot resolve symbol XXX xff0c 重启 A
  • input[type=file] 获取上传文件的内容

    上代码 xff1a span class token tag span class token tag span class token punctuation lt span input span span class token att
  • 解决pyinstaller打包后C盘出现 windows/TEMP/_MEI文件夹爆满的问题

    背景 xff1a 一每分钟执行的python脚本 xff0c 打包成exe后 xff0c 在有些机器出现 IME文件过多的问题 解决 xff1a 1 参考 Python转exe方法与 MEI清除方法 Don 39 t expect me t
  • 关于Android studio 升级到4.2文件缺失问题

    一 背景 当我把Android studio 开开心心的更新到4 2版本后 xff0c 结果就爆了一个类文件找不到的异常 xff08 如下图 xff0c 幸好只有一个 关于这个类的缺失是高版本JRE中剔除了这个类 xff0c 那只要把And
  • 求正整数n所有可能的和式的组合

    求正整数n所有可能的和式的组合 xff08 如 xff1b 4 61 1 43 1 43 1 43 1 1 43 1 43 2 1 43 3 2 43 1 43 1 2 43 2 xff09 首先说一下 xff0c 群里面很多人在问这个东东
  • Error:FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:t

    今日份遇到的 bug xff1a Error 注 某些输入文件使用或覆盖了已过时的 API 注 有关详细信息 请使用 Xlint deprecation 重新编译 注 某些输入文件使用了未经检查或不安全的操作 注 有关详细信息 请使用 Xl
  • JVM调优-解决native heap持续增长

    问题的提出 xff0c 分析 xff0c 请参考JNI 小心 xff0c 内存怪兽出没 xff08 简单的说起来 xff0c 就是java进程占用了4G内存 xff0c 但是折腾来折腾去 xff0c 整个JVM的堆才100M上下 xff0c
  • Centos 7 安装openjdk8 /jdk8/jre8 mvn-3.5.2 其他版本雷同

    文章目录 openjdk8jdk8 jre8maven 3 5 2源码下载指导 openjdk8 一 使用yum命令搜索支持jdk版本 yum search java grep jdk 二 使用yum安装jdk8 yum install y
  • 【2023最新版】Hexo+github搭建个人博客并绑定个人域名

    Hexo 43 github搭建个人博客并绑定个人域名 本篇教程完整讲述了如何利用Hexo 43 github搭建个人博客并且绑定自己的域名 xff0c 成为自己的网站 xff01 我的博客网站 xff1a 武师叔 做一个有趣而不甘平庸的人
  • H13-531云计算HCIE V2.0——1~400常错题和知识点总结

    1 100 35 FusionStorage Block无法是被配置RAID的磁盘 一定要将RAID信息删除后 Fusionstrage block才能识别到这些磁盘 错误 61 Ceilometer监控通过在计算节点部署Compute服务
  • 我的2013

    今天是2013年的最后一天 xff0c 天气格外的晴朗 xff0c 站在公司的写字楼上 xff0c 能够看到远处的山水 一直都习惯在一年的最后总结一下 xff0c 总结自己哪些地方在成长 xff0c 哪些地方有收获 xff0c 哪些地方需要
  • 项目管理中的TR点

    TR的意思是技术评审 xff0c 是英语Technical Review的简写 一般项目管理中有以下一些技术评审点需要关注 xff1a TR1 概念阶段技术评审点 xff1a 产品需求和概念技术评审 xff08 业务需求评审 xff09 T
  • linux ln 命令使用参数详解(ln -s 软链接)

    这是linux中一个非常重要命令 xff0c 请大家一定要熟悉 它的功能是为某一个文件在另外一个位置建立一个同不的链接 xff0c 这个命令最常用的参数是 s 具体用法是 xff1a ln s 源文件 目标文件 当 我们需要在不同的目录 x
  • 别再让C++头文件中出现“using namespace xxx;”

    在这里 xff0c 我毫不回避地说了这句话 xff1a 引用 我再也不想在任何头文件中看到 using namespace xxx 了 作为一个开发者 团队领导者 xff0c 我经常会去招聘新的项目成员 xff0c 有时候也帮助其他组的人来

随机推荐

  • Linux 查看监听端口的方法

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • SVN MERGE 和冲突

    摘要 xff1a 最佳做法是避免冲突 冲突时 xff0c 不要把branch merge到trunk 先由最新版本的trunk得到branch 然后再修改文件 xff0c 直接merge过去就行 这样不会有冲突 先用svn merge dr
  • Linux命令之basename使用

    basename 命令 首先使用 help 参数查看一下 basename命令参数很少 xff0c 很容易掌握 basename help 用法示例 xff1a basename usr bin sort 输出 34 sort 34
  • android log详解

    之前两篇文章之后 xff0c 打算再分享一点儿经验 xff1a 之前文章见这里 xff1a 1 xff0c 全看懂了 加两年经验 语音朗读 语音识别 语音控制软件源码 2 xff0c 学生作品 配置NDK集成开发环境全过程第一版 这次打算通
  • 各种编码知识简介

    本文主要介绍我们在日常开发中接触到了latin1 xff0c GBK xff0c GB18030 xff0c UTF 8 编码几种 下面首先来看看这几种编码的的区别 latin1 1 先来看看latin1 参考百度百科 Latin1 是IS
  • Linux 技巧:让进程在后台可靠运行的几种方法

    我们经常会碰到这样的问题 xff0c 用 telnet ssh 登录了远程的 Linux 服务器 xff0c 运行了一些耗时较长的任务 xff0c 结果却由于网络的不稳定导致任务中途失败 如何让命令提交后不受本地关闭终端窗口 网络断开连接的
  • nohup命令浅析

    要将一个命令放到后台执行 xff0c 我们一般使用nohup sh command amp amp 都知道是放到后台执行这个命令 xff0c 那么nohup是做什么的 xff1f 这就要从unix的信号说起 xff0c unix的信号机制可
  • 《曾国藩家书大全集》读书笔记——励志篇

    曾国藩将立志作为人生第一要义 xff0c 只要能立志 xff0c 便人人都可以做圣贤豪杰 人生不但要立志 xff0c 还要持之以恒 xff0c 持之以恒是人生第一美德 xff0c 人而无恒 xff0c 将一事无成 曾国藩很重视逆境对人心志的
  • 书,永远的朋友

    我自己认为我是一个不大喜欢看书的人 xff0c 相对于书 xff0c 我可能跟喜欢看视频和同高手一起讨论交流 但是 xff0c 真正静下心来 xff0c 想着这么多年来 xff0c 对我影响很大的一些书 xff0c 也能想到一些 索性 xf
  • PackageManagerService Android 8.1 源码解读 01

    一 PackageManagerService 是什么 xff1f 答 PackageManagerService xff08 简称 PKMS xff09 xff0c 是 Android 系统中核心服务之一 xff0c 负责应用程序的安装
  • IMU之磁力计校准&地磁场&计算磁航向

    背景知识 xff1a 导航坐标系 xff1a 东 北 天 载体坐标系 xff1a 右 前 上 欧拉角定义 xff1a 3 1 2旋转 xff0c xff08 航向角 俯仰角 滚转角 xff09 xff1b 航向角北偏西为正 xff0c 范围
  • 机器学习库scikit-learn简介(一)

    一 机器学习问题 通常 xff0c 学习问题考虑n个样本数据集 xff0c 然后预测未知数据的属性 若各个样本多于一个 xff0c 例如 xff0c 对于多维的条目 xff08 又称多元数据 xff09 xff0c 即说有多个属性或特性 我
  • 前台解析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中启动模式 重新启动 成功
  • 【进程间通信】——认识同步与互斥,了解生产者消费者原理。

    临界资源 在操作系统中 xff0c 进程是占有资源的最小单位 xff08 线程可以访问其所在进程内的所有资源 xff0c 但线程本身并不占有资源或仅仅占有一点必须资源 xff09 但对于某些资源来说 xff0c 其在同一时间只能被一个进程所
  • 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
  • win7 配置JDK环境变量

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

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