手动部署并测试内网穿透(ssh 和 nginx)

news2024/9/21 2:35:39

原理回顾

首先需要一台连接了公网的云服务器,然后我们要访问的内网穿透对象最好是Linux服务器,比如虚拟机,然后我们通过向云服务器发送指令,云服务器再将指定发送给指定对象,让其能够执行命令。 

总结就是:假设家里的机器就是我们的目标服务器,它首先会跟我们的云服务器进行通信,然后建立NAT转化表,这样我们的云服务器就能和家里的服务器进行通信了,这样我们在外边就可以直接跟我们的云服务器通信,然后在云服务器上通过特定的软件,将我们的请求转发到内网中的机器,这就是内网穿透。 也就是一个局域网内的主机可以访问另一个局域网内的主机了。

实操部分

环境配置 

首先推荐的软件叫做frp,可以在github上找到。

frp 下载:https://github.com/fatedier/frp/releases/tag/v0.58.1 

注意下载的版本(Linux 64位下)

另外 用远程登录 是sshd 端口号是22。 

 这里的虚拟机用的是 Ubuntu 22 64位。

 将下好的压缩包拖入到我们的云服务器上,用

tar xzf + 压缩包名

来解压好,并进入到解压后的文件夹内

其中有两个可执行程序,frpc表示是给客户端用的,frps是给云服务器用的。这个程序是用go写的

其中它俩各有一个.toml配置文件。

所以这个不仅云服务器得有,客户端也得有。

 另外在虚拟机这里,

建议把网络适配器改为NAT模式,因为我们的本地机器是Windows的,这样配置后,我们如果在虚拟机上网,那么本地的Windows就相当于路由器,它会履行一个路由器的职责,比如建立NAT转化表等。 这个结论可以在 虚拟机上 通过 ifconfig 来查看本机的IP地址

然后用本地的Windows去ping这个IP地址

发现是可以ping通的。反过来用虚拟机ping本地的也是可以的。

在Windows上,可以用

ipconfig

 

可以看到Windows给每一个虚拟机都构建了一个子网(我这里有两个虚拟机)。 

接着,简单说明了原理后,在Windows的cmd下,输入dir

 往下翻可以看到有一个Desktop的文件夹,这其实就是我们的桌面。类似 Linux下 pwd 和 ls 命令的结合。

我之前已经把frp压缩包放到桌面了,接着我们cd进去,然后再dir

就能看到这个压缩包了。

最后 用 scp命令,将文件拷贝到虚拟机上

scp frp_0.58.1_linux_amd64.tar.gz chika@192.168.233.132:/home/chika/test-frp

注意ip地址前加上 目的用户名 + @ ,ip地址后加上 : + 目的路径 

先输入 yes  再输入虚拟机用户的密码即可。

如果Ubuntu不行,用Centos也行

 

同样进行了解压就可以了。

在命令行上输入

ps ajx | grep sshd

 可以查看当前机器是否启动了 ssh服务。

关于配置文件和注意事项 

首先先看一下云服务这边的配置文件,云服务器下执行

vim frps.toml

 

这里面只有一项,就是云服务默认绑定的端口号

默认是7000,可以不改。假设我们给改成了 8080,并保存退出,然后直接执行 frps

这里我们发现它绑定的端口号还是7000,我们可以先看一下frps的启动方式

 ./frps -h

 

所以我们要想指定端口号启动,就要再加上 -c 配置文件名

./frps -c frps.toml

 查看一下

netstat -nltp

发现确实启动了。

#配置公网服务器上 frp 服务的 IP 与端口
serverAddr = "x.x.x.x"
serverPort = 8888
[[proxies]]
name = "ssh-serivce" #名称
type = "tcp" #代理类型
localIP = "127.0.0.1" #本地 IP
localPort = 22 #内网服务监听的端口
remotePort = 8081 #需要在公网服务器上监听的端口,
#其他人未来可以通过这个端口访问
我们的本地的 22 号服务
#也就是说 8081 端口会映射到 22 号

接着再来看看客户端的配置文件

 首先前两行是我们这个客户端要连接的服务器的IP地址和端口号,这是需要我们自行修改的。

比如改成这样

其中下面的name将来会显示在服务器那边,以提醒服务器是哪个客户端连上来了。 

这个 type = tcp就不用多说,说明使用的是tcp协议。这个localIP表示的是这个客户端对外提供ssh服务的IP,在客户端这里就是本地。因为服务器将请求转发给的是客户端的frpc进程,在这个进程内部其实还要进一步将请求转发到,比如这个机器的ssh服务上的,因此其实还有一次转发。

最后 这个 localPort和remotePort是一对映射关系,将来如果我们在外边想通过云服务器来访问本地的ssh服务的22端口,那么外边就得访问云服务器上的6000号端口,然后云服务器将其映射成22号端口号。

注意:不要将 云服务器bind的8080端口号和这里的6000搞混淆了,8080是客户端访问云服务器的,当我们的客户端将 ssh端口号及它的remotePort推送给云服务器后,云服务器会重新启动一个服务,再bind一个remotePort端口号, 以后用户只要访问remotePort就能访问到客户端了。

 开始连接访问 ssh

启动客户端

./frpc -c frpc.toml

 

我们发现服务器这边立马也多了些信息

 其中仔细查找就能发现之前修改的客户端的名字, ssh-server

此时在云服务器上用netstat查看一下

发现果然又多了一个端口号为 6000的frps的网络服务。 但是注意它们的PID是一样的,说明是进程内部绑定的。

到这里,我们的就可以开始测试了。用X-shell再创建一个会话,不过此时

主机名依旧是云服务的IP地址,不过此时的端口号不再是22了,而是之前在客户端配置好的6000.

 确定之后,并连接

这里我是用CentOS7作为客户端测试的。 

 然后输入 客户端的密码

接着就连接成功了

ll一下

 因为我的CentOS7客户端是带有图形化界面的,所以是这样的。

我们可以cd 到桌面,并创建一个test文件夹

再回到虚拟机的桌面

发现确实多了一个test文件夹。

nginx远程访问

这里在虚拟机上部署nginx用来测试web服务访问

首先先在虚拟机上进行安装

sudo yum install nginx # centos 安装
sudo apt install nginx # ubuntu 安装

#启动
$ nginx

#暂停
 nginx -s stop

#查看
ps ajx | grep nginx

 

再来看看它的端口号是多少

 发现端口号是80

说明是已经打开了,接着就再来配置客户端的frpc.toml

原来的信息可以不用删,因为frp支持多条连接访问服务器,然后由服务器暴露多个不同的端口给外界访问。

 改成这样即可

保存并退出后,再启动客户端

 发现多了一个 http-server

此时再看服务器这边

发现确实启动了两个服务,其中一个端口号是6000,另一个是6001

一个提供的是ssh服务,另一个提供的是web服务。

部署完成后,我们可以直接在打开我们本地的Windows浏览器,通过输入云服务器的公网 ip + 6001,可以直接访问到虚拟机上的网址

 

关于服务的后台启动并重定向

nohup ./frpc -c ./frpc.toml &> /dev/null &

nohup ./frps -c ./frps.toml &> /dev/null &
&> /dev/null :这是重定向操作,用于将命令的标准输出( stdout )和标准错误
stderr )都重定向到 /dev/null /dev/null 是一个特殊的设备文件,向它写入的内
容都会被丢弃,读取它则会立即返回文件结束。因此,这个操作的作用是忽略命令的
所有输出信息。

至此内网穿透测试完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2150882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法——Java实现 6.递归

要学会试着安静下来 —— 24.9.17 一、递归的定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集 说明: ① 自己调用自己,如果说每个函数对应着一种解决方案,自己调用自己意味着解决方案是…

数据建模无法满足复杂业务需求?别慌,数据开发平台可以完美互补!

前言 数据可视化建模无论是对于企业的数字化转型,还是对数据资源的价值开发来说,都是至关重要的工具,小兵在前文《数据可视化建模平台介绍》。中有详细介绍过他的能力,包括面向多源异构的企业数据,为企业提供数据集成…

web基础—dvwa靶场(十一)CSP Bypass

CSP Bypass(CSP 绕过) 内容安全策略(CSP)用于定义脚本和其他资源可以从何处加载或执行,本模块将指导您根据开发人员犯下的常见错误来绕过该策略。 这些漏洞都不是 CSP 中的实际漏洞,它们都是实现 CSP 的方式中的漏洞。 绕过内容安…

xtop:如何debug fail reason

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 fix_xx_violations之后,工具会报告fail reason summary,通过man reason_name可以获知fail原因&#x

STM32(十六):MPU6050简介

MPU6050 MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景。 3轴加速度计(Accelerometer&#…

攻防世界--->gametime

做题笔记。 前言: 因为有意思,所以,,,打通关了。。哈哈哈。 题外话:哦,程序结果还在,是因为我是在WSL—Debian上运行的。你还别说,真挺好用的,vm虚拟机能不…

Node-RED和物联网分析:实时数据处理和可视化平台

这篇论文的标题是《Node-RED and IoT Analytics: A Real-Time Data Processing and Visualization Platform》,发表在《Tech-Sphere Journal of Pure and Applied Sciences (TSJPAS)》2024年第一期上。论文主要探讨了Node-RED和物联网分析在物联网(IoT)实时数据处理…

列表、数组排序总结:Collections.sort()、list.sort()、list.stream().sorted()、Arrays.sort()

列表类型 一.Collections.sort() Collections.sort()用于List类型的排序&#xff0c;其提供了两个重载方法&#xff1a; 1.sort(List<T> list) &#xff08;1&#xff09;List指定泛型时只能指定引用数据类型&#xff0c;也就是说无法用于基本数据类型的排序。 &am…

9.20作业

手动封装一个顺序表&#xff08;SeqList&#xff09;,分文件编译实现 有私有成员&#xff1a; 顺序表数组的起始地址 ptr、 顺序表的总长度&#xff1a;size、顺序表的实际长度&#xff1a;len 成员函数&#xff1a; 初始化 init(int n) 判空&#xff1a;empty 判满&#xff1…

Rust语言入门第七篇-控制流

文章目录 Rust语言入门第七篇-控制流If 表达式基本结构特点和规则示例 let 语句中使用 ifloop 循环基本结构特点示例综合示例 while 循环基本结构特点示例综合示例 与 loop 循环的区别 for 循环基本结构详细说明特点示例综合示例 match 表达式match表达式的语法结构示例代码 Ru…

Mysql存储过程详细解读

目录 存储过程介绍 创建与调用 查看与删除 变量 系统变量 用户自定义变量 ​编辑局部变量 ​编辑​编辑IF判断 存储过程参数​编辑​编辑​编辑 CASE ​编辑 WHILE​编辑 ​编辑REPEAT​编辑​编辑 LOOP 游标 条件处理程序 存储函数 存储过程介绍 创建与调用 查…

GNN-RAG:用于大模型推理的图神经检索

GNN-RAG&#xff1a;用于大模型推理的图神经检索 秒懂大纲提出背景解法拆解全流程优化创意总结 论文&#xff1a;GNN-RAG: Graph Neural Retrieval for Large Language Model Reasoning 代码&#xff1a;https://github.com/cmavro/GNN-RAG 秒懂大纲 ├── GNN-RAG【主题】…

【刷题日记】43. 字符串相乘

43. 字符串相乘 其实就是大数乘法题&#xff0c;这道题用草稿纸演练一下&#xff0c;其实很好找到方法&#xff0c;模拟大数乘法即可。需要注意的是进位和迭代值&#xff0c;还有注意向下取整和去除前导0&#xff08;容易遗漏&#xff09;。去除前导0的时候还要注意如果全是0&…

命令行运行python时找不到模块怎么解决

问题&#xff1a; 新建了一个项目&#xff0c;目录结构如下&#xff1a; 然后在pycharm中运行glovar是没有问题的&#xff0c;但是在命令行中运行就会提示找不到init模块。 这是因为在pycharm中运行的时候&#xff0c;pycharm会自动将项目所在目录添加到了sys.path中&#xf…

天宝Trimble RealWorks2024.0.2注册机 点云后处理软件 点云三维重建软件

一、功能特色 1、强大的点云数据处理平台 Trimble Realworks2024是市面上先进的点云数据处理软件&#xff0c;能够配准、可视化、浏览和直接处理市面上几乎所有主流品牌扫描仪点云数据&#xff0c;包括Leica、Riegl、ZF、Faro、Topcon等。 2、业界领先的无目标全自动配准 T…

Apache Flink 流批融合技术介绍

摘要&#xff1a;本文整理自阿里云高级研发工程师、Apache Flink Contributor 周云峰老师在 Apache Asia CommunityOverCode 2024中的分享。内容主要分为以下三个部分&#xff1a; 从流批一体到流批融合流批融合的技术解决方案社区进展及未来展望 一、从流批一体到流批融合 1&…

记忆化搜索专题——算法简介力扣实战应用

目录 1、记忆化搜索算法简介 1.1 什么是记忆化搜索 1.2 如何实现记忆化搜索 1.3 记忆化搜索与动态规划的区别 2、算法应用【leetcode】 2.1 题一&#xff1a;斐波那契数 2.1.1 递归暴搜解法代码 2.1.2 记忆化搜索解法代码 2.1.3 动态规划解法代码 2.2 题二&#xff1…

网络模型的保存与读取

文章目录 一、模型的保存二、文件的加载三、模型加载时容易犯的陷阱 一、模型的保存 方式1:torch.save(vgg16, “vgg16_method1.pth”) import torch import torchvision.modelsvgg16 torchvision.models.vgg16(pretrainedFalse) torch.save(vgg16, "vgg16_method1.pth…

oracle数据库启动

文章目录 背景一、步骤1.登录oracle用户2.启动监听服务3.启动数据库 背景 oracle数据库启动 一、步骤 1.登录oracle用户 代码如下&#xff08;示例&#xff09;&#xff1a; su - oracle2.启动监听服务 代码如下&#xff08;示例&#xff09;&#xff1a; lsnrctl start成…

【C++】STL----vector常见用法

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;C从小白到高手 &#x1f339;往期回顾&#x1f339;&#xff1a;[C]string类 &#x1f516; 流水不争&#xff0c;争的是滔滔不息。 文章目录 一、vector的介绍vector…