【内网穿透】打洞笔记

文章目录


前言

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

相关推荐
Achanss2 小时前
C#学习笔记 .NET Core使用注意事项
笔记·学习·c#
月夕花晨3743 小时前
C++学习笔记(14)
c++·笔记·学习
xcato3 小时前
k8s笔记
笔记·容器·kubernetes
lagransun3 小时前
Linux内核学习之 -- 系统调用open()和write()的实现笔记
linux·笔记·学习
sml_54214 小时前
【笔记】绪论 轨道交通材料及其加工工艺
笔记
Invulnerabl_DL4 小时前
《基于深度半监督学习的目标检测综述》泛读
笔记·深度学习·学习·目标检测·计算机视觉
Zhichao_976 小时前
【UE5 C++课程系列笔记】02——创建C++类的三种方式
c++·笔记·ue5
快下雨了L6 小时前
UE5学习笔记21-武器的射击功能
笔记·学习·ue5
ozawacai7 小时前
Element UI入门笔记(个人向)
笔记·elementui·vue
liangbm37 小时前
数学建模笔记—— 整数规划和0-1规划
笔记·python·数学建模·matlab·线性规划·整数规划·0-1规划