【内网穿透】打洞笔记

文章目录

  • 前言
  • 原理阐述
    • 公网ssh
    • frp转发服务
  • 实现
    • 前提
    • 第一步:
    • 第二步
    • 第三步
    • 第四步
  • 补充
    • 第五步(希望隧道一直开着)
    • sftp传数据(嫌云服务器上的网太慢)


前言

租了一个云服务器,想用vscode的ssh远程连接,发现有必须要有公网才能进行连接,于是又租了一个月的公网,但还是想知道有没有办法不用租公网也能实现连接,于是在大佬的帮助下成功实现,这里记录一下打洞的笔记。

云服务的镜像
linux 版本:Ubuntu20.04

原理阐述

什么是bash,什么是shell
使用frp进行内网穿透,让本地HTTP网站公开访问

公网ssh

ssh:SSH(Secure Shell)是一种加密的网络协议,用于在网络中传输数据。主要功能之一是提供安全且可靠的远程登录服务。

如果我是用公网来远程的话,终端里直接ssh root@公网ip 就行。
假设公网ip:45.23.13.56

ssh root@45.23.13.56

你的电脑-> sshd(22)
d:daemon,linux上的服务基本都是d结尾的

这里意思是你的电脑连上了服务器公网的22端口,22是ssh协议默认的端口号。
一般来说,也是需要云服务器开放22端口,不过一般默认开放。

frp转发服务

Frp(Fast Remote Port Forwarding)是一款高效、安全、易用的远程端口转发工具,可以在不暴露服务的情况下,通过公网访问内网中的服务。它支持多种协议,包括HTTP、HTTPS、TCP等,能够实现反向代理、内网穿透、SSH隧道等功能。

假设frp的共享公网ip221.23.13.56,外网端口号44333

ssh root@221.23.13.56 -p 44333

你的电脑 -> frp节点服务器(44333) ->(frpc客户端->sshd(22))
(frpc安装在你的linux服务器上)

不加端口号的话是连上服务器本体,会连不上。

其实这个原理是你连接到frp,frp连接到你的本地服务,然后frp当中间人给俩设备转发数据。
(注意:frp网页里的本地指的是frpc运行的本地,也就是要填127.0.0.1 端口22)

实现

前提

1。服务器linux开启ssh功能
2。目标账户root允许密码登录/你设置好了私钥登录
3。阿里云防火墙放通22端口

查看实例信息,满足1,2
在这里插入图片描述
私钥登录在/etc/ssh/sshd_config
里面有个premitrootlogin prohibit-password
改成yes
不改的话root不允许用密码远程登录,防止别人试你的密码的。

实例的安全组的入方向的22端口为开。(实际云服务器的话,这三者都满足。)
在这里插入图片描述
防火墙开启代码

# 如果报错 要你安装 你就安装 类似于 sudo apt install firewall
# 开启
firewall-cmd --zone=public --add-port=9876/tcp --permanent
# 更新 
firewall-cmd --reload
# 查看 所有开放端口
firewall-cmd --list-port

步骤:
1.注册并启动一个frp服务
2.将frpc安装在你的linux云服务器上
2.启动frpc服务开启隧道
3.ssh连接

第一步:

进入frp第三方平台,注册。(https://www.natfrp.com/)
然后点击隧道列表,点击创建。
在这里插入图片描述
服务器都差不多,显示的都是推荐而已,我们这里要做穿透,选穿透就行。
在这里插入图片描述
远程端口你可以留空自动随机选一个,也可以手动指定,但是得慢慢试,很多已经被别人占用了,这里留空。
注:这里访问本地不是你自己电脑的意思 是你安装客户端frpc的位置,即你的云服务器的本地。

创建之后
在这里插入图片描述
点击配置文件 会出现
最上面一个框框里有一个
-f xxxxxxxx:xxxxx
这样的东西
linux上从sakurafrp下载一个frpc
然后运行
frpc -f xxxxxxxx:xxxx这条指令,就打开了隧道

第二步

安装frpc
下载地址:https://www.natfrp.com/tunnel/download 复制链接 使用wget(web get)下载

# 下载
wget https://nya.globalslb.net/natfrp/client/frpc/0.51.0-sakura-7.3/frpc_linux_amd64
# 赋予其执行权限
chmod +x frpc_linux_amd64 
# 移动move至/usr/local/bin目录下 确保所有用户都能访问它
sudo mv frpc_linux_amd64 /usr/local/bin/frpc
# 确认安装完毕
frpc --version

第三步

运行第一步获取到的信息

frpc -f xxxxxxxx:xxxx

即启动成功,
会告诉你
在这里插入图片描述
开启成功后,隧道列表也会显示绿标表示开启成功

第四步

就可以在终端ssh成功
-p 表示端口号

ssh root@221.23.13.56 -p 44333

如果是在vscode上实现ssh远程
即左下角ssh 添加新的ssh主机

ssh root@221.23.13.56 -p 44333 -A

补充

若是

第五步(希望隧道一直开着)

我们希望隧道一直开着
使用supervisor将这个进程挂后台
supervisor:管理和控制进程的工具,开机会自启动

# 1.安装
sudo apt-get install supervisor
# 2.创建 Supervisor 配置文件:在 /etc/supervisor/conf.d/ 目录下创建一个新的配置文件,例如 my_process.conf。
sudo nano /etc/supervisor/conf.d/my_process.conf

3.配置Supervisor

[program:my_process]
command=/usr/local/bin/frpc -f xxxxxxxx:xxxx
directory=/root/
autostart=true
autorestart=true
stderr_logfile=/var/log/my_process.err.log
stdout_logfile=/var/log/my_process.out.log
user=root

解释:
command:你要运行的命令。
directory:命令运行的工作目录。
autostart:是否在 Supervisor 启动时自动启动该进程。
autorestart:进程崩溃后是否自动重启。
stderr_logfile 和 stdout_logfile:日志文件路径。
user:运行进程的用户。

# 4.更新 Supervisor 配置
sudo supervisorctl reread
sudo supervisorctl update
# 5.启动进程
sudo supervisorctl start my_process
# 6.监控进程
sudo supervisorctl status

这样就可以使得可以一直用隧道的公网IP直接在vscode上远程了。

如图:
在这里插入图片描述

sftp传数据(嫌云服务器上的网太慢)

有时候我们嫌云云服务器上的网太慢 例微软的网站或者github上网站下东西太慢。
SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,通常用于在本地计算机和远程服务器之间安全地复制文件。

终端上sftp

# 连接云服务器
sftp root@xxx.xxx.xxx.xxx -p 44333
# 上传
put "E:\Users\REM2\Downloads\rocketmq-client-cpp-2.2.0.amd64.deb" /root/

put 是上传
第一个是本地的文件的地址
第二个是云服务器上文件夹地址

即可上传
例: [==================================>] 4.60M 1.62MB/s in 2.8s

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

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

相关文章

数据库中的复合查询

一、基本查询回顾 1、查询工资高于500或岗位为manager的员工,并且名字首字母是J 2、按部门编号升序,工资降序排序 3、用年薪降序排序 4、显示工资最高的员工名字和岗位(使用了子查询) 5、查询工资高于平均工资的员工 6、按部门查…

kubernetes集群部署elasticsearch集群,包含无认证和有认证模式

1、背景: 因公司业务需要,需要在测试、生产kubernetes集群中部署elasticsearch集群,因不同环境要求,需要部署不同模式的elasticsearch集群, 1、测试环境因安全性要求不高,是部署一套默认配置; 2…

orcad导出pdf 缺少title block

在OrCAD中导出PDF时没有Title Block 最后确认问题在这里: 要勾选上Title Block Visible下面的print

《昇思25天学习打卡营第19天|Diffusion扩散模型》

什么是Diffusion Model? 什么是Diffusion Model? 如果将Diffusion与其他生成模型(如Normalizing Flows、GAN或VAE)进行比较,它并没有那么复杂,它们都将噪声从一些简单分布转换为数据样本,Diffusion也是从…

46 mysql 客户端拿不到具体的错误信息

前言 这是最近碰到的一个问题 同样的一个 环境的问题, 在正常的 mysql 环境会返回 具体的错误信息, 然后 在我的另外一个环境里面 只能返回一些 unknown error 之类的 十分抽象的环境 然后 我们这里 来看一下 具体的情况 我们这里从 错误的环境 往前推导 来查看 并解决这个…

常见的计算机语言有哪些?

计算机语言用于编写软件和应用程序,各种语言有不同的用途和特点。目前常见的的编程语言有: 1、Java;2、Python;3、JavaScript;4、C;5、C#;6、Swift;7、Go;8、Ruby&#…

Chromium CI/CD 之Jenkins实用指南2024-系统基本配置(二)

1. 引言 在现代软件开发和持续集成/持续部署(CI/CD)过程中,Jenkins已经成为一款不可或缺的工具。作为一个开源的自动化服务器,Jenkins能够帮助开发团队自动化各种任务,包括构建、测试和部署应用程序。特别是当与Ubunt…

高职综合布线实训室

一、高职综合布线实训室建设背景 随着《国民经济和社会发展第十四个五年规划和2035年远景目标纲要》的深入实施,数字化转型已成为国家发展的核心战略之一,计算机网络技术作为数字化建设的基石,其重要性日益凸显。然而,面对数字时代…

数据可视化在智慧医疗中的重要应用

在现代智慧医疗的推动下,数据可视化技术正日益成为医疗领域的重要工具。通过将复杂的医疗数据转换为直观的图表和图形,数据可视化不仅提升了医疗服务的效率,还极大地改善了患者的就医体验。 在智慧医疗中,数据可视化首先在电子病历…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 7月17日,星期三

每天一分钟,知晓天下事! 2024年7月17日 星期三 农历六月十二 1、 三部门:紧急调拨1万件救灾物资支持河南、山东两省做好受灾群众基本生活保障工作。 2、 多部门联合公布无人驾驶试点名单:北京、上海等20个城市(联合体…

Cesium能做啥,加载哪些数据源,开源免费用商用吗?这里告诉你。

很多小伙伴对Cesium是什么,一知半解,本文是基础知识的扫盲,为大家分享cesium是什么、能做什么、默认数据是什么,为什么首先要进行数据加载,要加载哪些数据,希望通过这些带你入个门,欢迎点赞评论…

所有权与生命周期:Rust 内存管理的哲学

所有权与生命周期:Rust内存管理的哲学 博主寄语引言:编程语言的内存管理困境与 Rust 的解决方案。所有权基本概念:资源的绝对主权生命周期的理解与应用:编译时的守护神借用与引用的精妙设计:安全与效率的和谐共舞Rust …

服务器基础1

服务器基础复习01 1.环境部署 系统:华为欧拉系统 网络简单配置nmtui 因为华为欧拉系统密码需要复杂度 所以我们可以进入后更改密码 echo 123 | passwd --stdin root也可以 echo "root:123" | chpasswd2.关闭防火墙,禁用SElinux 首先先关…

C++:链表插入排序/删除重复节点题解

插入排序 插入排序的思路很简单,基本都知道。 关键是放在链表中, 1.要建立一个哨兵位,这个哨兵位的下一个节点,始终指向val最小的节点。 2.prev指针作为cur的前一个节点,始终指向val最大的节点。它的下一个节点始终…

C++ ─── vector的模拟实现

知识点: ① 因为vector是模版,所以声明和定义都放在.h中,防止出现编译错误。 .h不会被编译,在预处理中.h在.cpp中展开,所以在编译时只有.cpp 而 .cpp顺序编译,只会进行向上查找,因此至少有函数的…

交叉编译ethtool(ubuntu 2018)

参考文章:https://www.cnblogs.com/nazhen/p/16800427.html https://blog.csdn.net/weixin_43128044/article/details/137953913 1、下载相关安装包 //ethtool依赖libmul git clone http://git.netfilter.org/libmnl //ethtool源码 git clone http://git.kernel.or…

野兔在线工具箱系统全新升级改版,基于TP8和yetuadmin后台实现

野兔在线工具箱系统全新升级改版,基于TP8和yetuadmin后台实现 系统名称:野兔在线工具系统 系统语言:支持多语言,大概有20种 系统源码:不加密,开源 系统开发:PHPMySQL (基于thinkphp8&#x…

Docker容器——初识Docker,安装以及了解操作命令

一、Docker是什么? 是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源,用来管理容器和镜像的工具是在Linux容器里驱动运行应用的开源工具是一种轻量级的“虚拟机” 基于linux内核运行Docker的容器技术可以在一台主机上轻松为任何应用…

Pytorch的编译新特性TorchDynamo的工作原理和使用示例

在深度学习中,优化模型性能至关重要,特别是对于需要快速执行和实时推断的应用。而PyTorch在平衡动态图执行与高性能方面常常面临挑战。传统的PyTorch优化技术在处理动态计算图时效果有限,导致训练时间延长和模型性能不佳。TorchDynamo是一种为…

COHV 计划订单ALV界面添加字段

COHV 计划订单ALV界面添加字段 目录 增强点 包含文件:LCOWB01F02 这里是对ALV界面的显示字段输出值,输入结构为ls_header 结构添加字段 COWB_S_HEADER结构添加一个附加结构