【内网穿透】打洞笔记

文章目录


前言

租了一个云服务器,想用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

相关推荐
-Excalibur-几秒前
形象解释关于TCP/IP模型——层层封装MAC数据帧的过程
linux·c语言·网络·笔记·单片机·网络协议·tcp/ip
想唱rap1 小时前
C++ list 类的使用
c语言·开发语言·数据结构·c++·笔记·算法·list
朝新_2 小时前
【EE初阶】JVM
java·开发语言·网络·jvm·笔记·算法·javaee
牛马大师兄3 小时前
STM32实现低功耗管理使用配置知识梳理笔记
笔记·stm32·单片机·嵌入式硬件·物联网·低功耗
chushiyunen5 小时前
neo4j图数据库笔记
数据库·笔记·neo4j
丰锋ff6 小时前
2005 年真题配套词汇单词笔记(考研真相)
笔记
摇滚侠6 小时前
Spring Boot3零基础教程,生命周期启动加载机制,笔记64
spring boot·笔记
摇滚侠6 小时前
Spring Boot3零基础教程,整合 Redis,笔记69
spring boot·redis·笔记
JJJJ_iii7 小时前
【机器学习08】模型评估与选择、偏差与方差、学习曲线
人工智能·笔记·python·深度学习·学习·机器学习
CosimaLi7 小时前
CMake学习笔记
笔记·学习