Centos7自己搭建ngrok内网穿透,访问内网MySQL、Redis、web站点

2024-04-06 06:58

本文主要是介绍Centos7自己搭建ngrok内网穿透,访问内网MySQL、Redis、web站点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先我们需要准备一台云服务器,阿里、华为、腾讯都可以,这几家新用户都可以有很大的折扣,可以低价购进一台云服务器。

  1. 环境准备(这个操作需要在有公网IP的云服务器进行)

安装git

yum install -y git

安装go

# 下载gocd /usr/local
wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz# 解压
tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz# go命令需要软连接到/usr/bin
ln -s /usr/local/go/bin/* /usr/bin# go语言环境配置
yum install mercurial bzr subversion -y# 新建go目录作为项目目录
mkdir -p $HOME/go# cat方法在尾部最佳配置golang的 GOROOT GOPATH
# 需要注意下方的go路径需要换成自己解压后的路径
cat >>$HOME/.bash_profile<<EOF
export GOROOT=/usr/local/go    
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin
EOF# 配置生效
source $HOME/.bash_profile# 查看环境变量
go env
  1. Ngrok配置(这个操作需要在有公网IP的云服务器进行)
  1. 下载ngrok
cd /usr/local
git clone https://github.com/inconshreveable/ngrok.git
  1. 配置环境变量
export GOPATH=/usr/local/ngrok/# 下面的配置写自己的域名,不需要前缀,例如:baidu.com
export NGROK_DOMAIN="***.com"
  1. 生成证书
cd ngrokopenssl 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

 

  1. 覆盖原来的证书
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key

 

  1. 生成服务端
GOOS=linux GOARCH=amd64 make release-server
# 这里GOOS后面是你的系统windows或linux,我是linux,GOARCH 后面是系统位数64位是amd64,32位是386,这里需要等待好一会儿而且没有进度条~~
# 生成的服务端在/usr/local/ngrok/bin里面
  1. 生成客户端
GOOS=linux GOARCH=amd64 make release-client
#这里GOOS后面是你的系统windows或linux,我是要在Linux上启动客户端,GOARCH 后面是系统位数64位是amd64,32位是386,这里需要等待好一会儿而且没有进度条~~
  1. 启动服务端

A、将ngrokd配置为系统服务

vim /lib/systemd/system/ngrokd.service
[Unit]Description=ngrokd server
After=network.target[Service]Type=simple
ExecStart=/usr/local/bin/ngrokd -domain ngrok.***.com -httpAddr ":801" -httpsAddr ":802" -tunnelAddr ":1443" -log "/var/log/ngrokd.log"
Restart=on-failure[Install]
WantedBy=multi-user.target

B、启动服务

systemctl start ngrokd
systemctl status ngrokd
systemctl enable ngrokd
  1. 启动客户端

登录到内网服务器将编译好的ngrok客户端拷贝到/usr/local/ngrok目录,

  1. 创建ngrok配置文件
vim /usr/local/ngrok/ngrok.yml
server_addr: ***.com:1443 # 这里指定客户端要连接的服务端的域名和端口号,1443是监听的端口,可以在服务端进行更改
trust_host_root_certs: false # 这里指定是否验证服务端的证书,如果是从证书机构获取的证书则可以写为true,如果是自己生成的证书这里写为false
tunnels: # 这个配置项是你要开启的通道的配置ssh: # ssh是这个通道的名称,可以随意命名remote_port: 122 # 该配置项可以申请远程服务器的固定端口,如果不设置该参数,每次在启动客户端的时候服务端都会随机分配一个端口号proto: # 该配置项指明该通道使用哪些协议tcp: 22 # 该配置项指明该通道开启本地tcp协议的22(sshd服务)端口,即将远程的122端口转发到本地22端口mysql:remote_port: 13306proto:tcp: 3306redis:remote_port: 16379proto:tcp: 6379zookeeper:remote_port: 12181proto:tcp: 2181#next:#subdomain: web # 如果是启动http的通道则可以指定该配置项来声明该通道监听的子域名是什么,在访问时应该访问web.ngrok.域名#proto:#http: 80#api:#subdomain: api#proto:#http: 80

 

  1. 启动客户端
vim /lib/systemd/system/ngrok.service
[Unit]Description=ngrok client
After=network.target[Service]Type=simple
ExecStart=/usr/local/bin/ngrok -config "/usr/local/ngrok/ngrok.yml" -log "/var/log/ngrok.log" start-all
Restart=on-failure[Install]
WantedBy=multi-user.target

 

  1. 配置成功

ngrok启动成功

内网的Mysql通过ngrok.***.com:13306这个域名加端口可以在外网访问到了,redis也是如此。

最后附上阿里云的优惠购买地址

https://www.aliyun.com/minisite/goods?userCode=b7rjnvrm

华为云的优惠购买地址

https://reg.huaweicloud.com/registerui/cn/register.html?locale=zh-cn&fromacct=ea777214-758d-4b87-925c-39b724603edd

这篇关于Centos7自己搭建ngrok内网穿透,访问内网MySQL、Redis、web站点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/879299

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T