内网穿透[让你在家里也能榨干学校的服务器]Yep!

内网穿透

问题:什么是内网穿透,内网穿透的作用是什么?

前提!!!!你得拥有超级管理员的权限,比如root,不然后面的一切免提!

应用场景如下:比如你在家,你想连接学校的服务器,但是因为学校的服务器是局域网,172开头的,我们在家也是一个局域网,不同局域网没办法互连,那就需要一个中间人来进行连接,我们都可以和这个中间人进行连接,所以就需要一个公网IP,这样我们在家的电脑和在学校的服务器都可以连接上去,让这个中间人为我们传递数据。如下图所示。以下假设的IP地址没有任何实际意义,只是作为假设,特此声明
在这里插入图片描述

所以引出了内网穿透所需要的资源:
(1)学校服务器的IP地址:这里我们假设是上图的172.22.33.44
(2)公网的IP地址(去阿里云租一个,新用户免费3个月,租ECS服务器,租过的话换个手机号就能租个新的了,或者买一个,学生优惠99一年)服务器IP:8.138.66.121
(3)frp内网穿透工具(注意下载的版本,以下参考是x86的版本,所以下载amd64)

现在我们已经拥有公网的IP了,学校的服务器和家里的电脑都是联网的,所以可以Ping通ECS服务器。现在正式开始配置frp

1. 服务器端,也就是我们租的那台服务器,我们用来作为Service端。

sudo apt-get update

wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz

tar -zxvf frp_0.53.2_linux_amd64.tar.gz  #解压缩:tar xvf 文件名

cd frp_0.53.2_linux_amd64                #进入解压目录

#修改frps.toml文件
sudo vim ./frps.toml

添加以下内容:

# 设置frps端的监听端口
bindPort = 7000

下面方法是一次性的,关机重启之后就要将服务重新开启。

#在frp_0.17.0_linux_amd64目录下,临时启动命令
./frps -c ./frps.toml

#后台保持启动
nohup ./frps -c ./frps.toml &

故引出开机自启动服务器,也就是写一个脚本

sudo vim /etc/systemd/system/frps.service

注意ExecStart改为实际的存放路径

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动命令,改为实际存放frps的路径
ExecStart = /home/frp_0.53.2_linux_amd64/frps -c /home/frp_0.53.2_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target
# 启动服务
systemctl start frps
# 查看服务状态
systemctl status frps
# 重启服务
systemctl restart frps
# 开机自启动
systemctl enable frps

到此为止 服务器端就配置好了,该配置客户端,也就是我们的学校的服务器,需要超级管理员权限!!!再次提醒。

2. 客户端,学校的服务器

第一步也是先下载frp,但是在客户端使用的是frpc,服务器端是frps

sudo apt-get update

wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz

tar -zxvf frp_0.53.2_linux_amd64.tar.gz  #解压缩:tar xvf 文件名

cd frp_0.53.2_linux_amd64                #进入解压目录

#修改frps.toml文件
sudo vim ./frpc.toml

在frpc.toml中配置文件

serverAddr = "8.138.66.121" #我们租到服务器的递增
serverPort = 7000 #我们在租到服务器中frps.toml写的监听端口号

[[proxies]]
name = "test-tcp" #可以随便取一个,但是不要取ssh,可能会发生冲突
type = "tcp" #网络连接方式,不用改
localIP = "127.0.0.1" #不用改
localPort = 22 #不同改
remotePort = 6000 #不用改,6000我们后面会用来连接

临时启动

#临时启动
./frpc -c ./frpc.ini

#后台保持启动
nohup ./frpc -c ./frpc.toml &

开机自启动
同样在ExecStart更改为真实的frp工具存放路径

[Unit]
Description=frpc
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/frp_0.53.2_linux_amd64/frpc -c /usr/local/frp_0.53.2_linux_amd64/frpc.toml
Restart= always
RestartSec=1min

[Install]
WantedBy=multi-user.target
# 启动服务
systemctl start frpc
# 查看服务状态
systemctl status frpc
# 重启服务
systemctl restart frpc
# 开机自启动
systemctl enable frpc

这样整个过程就配置好了。

3.测试

在我们租阿里云服务器上输入指令,下面的User是你要连接的用户名

ssh -p 6000 User@127.0.0.1

然后输入你用户的密码就可以连接上去了。

4. 应用:在Vscode上登录,且完成免密登录。

(1)下载插件Remote-SSH
在这里插入图片描述
(2)然后点击图标,如下图
在这里插入图片描述
(3)接着修改配置文件,点击小齿轮
在这里插入图片描述
(4)进入配置文件,修改配置文件,第一个Host,需要填我们在阿里云租到服务器的公网IP,第二个Host只需要改最后一行的那个数字改为公网IP就行了。

Host 8.138.66.121 
    HostName 8.138.66.121 
    User root
    Port 22
Host 127.0.0.1
    HostName 127.0.0.1
    Port 6000
    User XXX
    ProxyCommand ssh -W %h:%p 8.138.66.121 

(5)这样我们点击连接127.0.0.1就会连接到我们的服务器了,简单来说,就是把公网服务器作为跳板,跳到了我们的学校的服务器。但是需要输入俩次密码,是不是很麻烦!!!!

5.免密登录

免密登录需要用到id_rsa.pub这个文件和authorized_keys这个文件
(1)先免密登录到我们的跳板,也就是租的阿里云服务器。将我们本地下生成的id_rsa.pub文件复制到阿里云服务器上,如果本地没有,就先生成,生成代码如下:

ssh-keygen -t rsa

一般来说会在c:\users\XXX.ssh下出现这个文件。
(2)复制的方式可以通过终端文件windterm或MobaXterm直接上传,或者使用命令scp传输,具体scp命令可以自己搜一下,反正要将id_rsa.pub复制到阿里云服务器上,然后为了防止覆盖authorized_keys文件,我们使用拼接的方式,如下:

cat id_rsa.pub > authorized_keys

这样我们就实现了免密登录到阿里云服务器,完成了第一次飞跃。
(3)接下来同样的方式完成第二次飞跃,将在本地电脑,也就是我们第一次复制到阿里云服务器上的id_rsa.pub同样复制到学校服务器上的.ssh文件夹下,完成第二步同样的操作。

这样我们就可以免密登录了

6. 需要注意的问题

(1)如果在下载frp的时候过慢,可以在本地下载好,在移动到服务器上去,因为是在github上下载的
下载链接https://github.com/fatedier/frp/releases。注意需要下载的版本。./frpc: cannot execute binary file: Exec format error,就是版本不对,确认一下版本。
(2)自启动脚本的frp工具的实际路径得设置好
(3)如果阿里云服务器上和学校的服务器上没有.ssh文件,可以自己生成,生成方式如第五点免密登录的第一步,生成后,可以删掉原本的id_rsa.pub,用我们复制过来的。

7. 引用

[1] https://blog.csdn.net/deng_xj/article/details/88952420
[2] https://zhuanlan.zhihu.com/p/572431267
[3] https://blog.csdn.net/xuzhongyi103/article/details/134363523
[4] https://blog.csdn.net/weixin_43863869/article/details/135042123
[5] https://blog.csdn.net/lixuande19871015/article/details/98613711

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

复选框QCheckBox和分组框QGroupBox

1. 复选框:QCheckBox 实例化 //实例化 // QCheckBox* checkBox new QCheckBox("是否同意该条款",this);QCheckBox* checkBox new QCheckBox(this);1.1 代码实现 1.1.1 复选框的基本函数 复选框选中状态的参数 Qt::Unchecked //未选中状态 Qt::Part…

C++I/O流——(3)文件输入/输出(第二节)

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 含泪播种的人一定能含笑收获&#xff…

Qt QSlider滑动条控件

文章目录 1 属性和方法1.1 值1.2 方向1.3 步长1.4 信号和槽 2 实例2.1 布局2.2 代码实现 QSlider是滑动条控件,滑动条可以在一个范围内拖动,并将其位置转换为整数 最常见的应用就是视频播放器中的进度条 1 属性和方法 QSlider继承自QAbstractSlider&…

Linux中文件名修改的多种方法

找一个不算漂亮的普通女孩,一起柴米油盐,一起日出日落,一起田间地头,一起春花冬雪!要一个不算大的小房子,生两个健康可爱的宝宝,这样就很好。。。。。。 简介: 在Linux系统中&#x…

使用Python+pygame实现贪吃蛇小游戏

使用Pythonpygame贪吃蛇小游戏 使用第三方库pygame,关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 给出两种实现。 第一种 运行效果如下: 游戏源码如下: import pygame import sy…

排序算法之八:计数排序

1.计数排序思想 计数排序,顾名思义就是计算数据的个数 计数排序又称非比较排序 思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤: 统计相同元素出现次数 根据统计的结果将序列回收到原来的序列中 计数…

freetos day1

作业:使用计数型信号量设计:生产者和消费者模型 总结今天学习的API函数,写出函数参数和返回值的意思,并且说明函数功能 1 2 3

【数据结构】C语言实现共享栈

共享栈的C语言实现 导言一、共享栈1.1 共享栈的初始化1.2 共享栈的判空1.3 共享栈的入栈1.3.1 空指针1.3.2 满栈1.3.3 入栈空间错误1.3.4 正常入栈1.3.5 小结 1.4 共享栈的查找1.5 共享栈的出栈1.6 共享栈的销毁 二、共享栈的实现演示结语 导言 大家好,很高兴又和大…

文件上传进阶绕过(二)4个技巧和靶场实战

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 0、环境准备 请移步《文件上传靶场实战:upl…

「会议推荐」食品饮料行业数字化、智能化转型升级高质量发展论坛

“2024第十二届国际生物发酵产品与技术装备展览会(济南)”将于2024年3月5-7日在山东国际会展中心(济南市日照路1号)举办。同期中国生物发酵产业协会、山东省轻工机械协会、山东省食品工业协会联合举办“2024食品饮料行业数字化、智…

Win10提示找不到mfc71ud.dll文件,程序无法运行,的解决办法,亲测有效

mfc71ud.dll是Windows操作系统中的一个动态链接库文件,由Microsoft公司开发,属于Microsoft Foundation Class (MFC)库的一部分。"ud"后缀表示这是一个Unicode Debug版本,主要用于支持程序开发和测试。 这个文件主要被用于运行各种…

C++--引用

一.引用的定义🍗 引用是已定义的变量的别名。 例如将data作为value的引用(别名),则可以随意使用data或value来表示该变量。 引用有何作用呢? 其主要作用是作为函数的形参(和函数的返回值)。这样 函数的形参就是实参本身,而不是其副本。这样除指针外,引用也为函数处…

命名空间 “Eigen“ 没有成员 “SelfAdjointEigenSolver“

代码中用到SelfAdjointEigenSolver 结果报错&#xff1a;报错实在windows10条件下发生的。 查找资料&#xff0c;最后还是要定位到官方文档。 计算自伴随矩阵的特征值和特征向量。 这是在特征值模块中定义的。 添加如下引用即可解决&#xff0c;请点赞关注。 #include <…

ssm+vue的物流配送人员车辆调度管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项项目。

演示视频&#xff1a; ssmvue的物流配送人员车辆调度管理系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&…

腾讯云服务器定价_云服务器价格_云服务器计费模式

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

一文搞懂系列——Linux C线程池技术

背景 最近在走读诊断项目代码时&#xff0c;发现其用到了线程池技术&#xff0c;感觉耳目一新。以前基本只是听过线程池&#xff0c;但是并没有实际应用。对它有一丝的好奇&#xff0c;于是趁这个机会深入了解一下线程池的实现原理。 线程池的优点 线程池出现的背景&#xf…

腾讯云服务器购买指南,2024更新购买步骤

腾讯云服务器购买流程很简单&#xff0c;有两种购买方式&#xff0c;直接在官方活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动…

2024年学鸿蒙开发就业前景怎么样?

随着科技的不断进步&#xff0c;鸿蒙系统作为华为自主研发的操作系统&#xff0c;逐渐引起了人们的关注。 2024年&#xff0c;鸿蒙开发就业前景如何&#xff1f; 对于那些对鸿蒙开发感兴趣并希望在这一领域寻找职业发展的人来说&#xff0c;这是一个非常重要的问题。 首先&a…

buuctf-Misc 题目解答分解118-120

118.[INSHack2017]sanity 打开压缩包就是一个md 文件 typora 打开 发现flag INSA{Youre_sane_Good_for_you} 119.粽子的来历 解压压缩包 &#xff0c;得到文件夹如下 用010 editor 打开 我是A.doc 这个有些可以 都改成FF 保存 然后再次打开 docx 文件就发现了屈原的诗 其他b…

PattPatel-“Introduction to Computing Systems“(4)期末样卷题目解析:C语言递归

C语言的递归我觉得最主要的还是要把Patt&Patel的部分好好理解下&#xff08;因为有和硬件结合的部分&#xff09;&#xff0c;但因为今天就考试&#xff08;来不及做这样的事情&#xff09;&#xff0c;先把之前模拟卷的题目给尝试弄明白&#xff0c;然后考完试之后继续学习…