一招教会你基于阿里云ECS服务器实现【内网穿透SSH访问家庭树莓派】

简介: 寒假整了一个阿里云的服务器,利用frp内网穿透工具实现了外网访问家里的树莓派,方便以后工作在外远程访问家里的树莓派。此教程适合树莓派小白从零开始配置树莓派。

一、个人自我介绍

大家好,我是一名大四的学生,就读的专业是机器人工程,主要学的是机器人学基础、工业机器人仿真技术、ROS操作系统、人工智能基础、单片微型计算机原理与接口技术、C++、Python、模电数电、电路原理还有电路PCB设计等主要专业课程。以前在阿里云平台有了解过一些物联网应用技术,利用阿里云做出了一个物联网设备,参加比赛获得过奖项。

二、实验操作前的准备

2.1 材料准备

树莓派4B、读卡器、16G内存卡、千兆网线一根、电脑、联网的wifi路由器,能流量上网的手机,最重要的是在阿里云申请一个有公网IP的云服务器。

2.2 树莓派设置

2.2.1 树莓派镜像烧录

树莓派4B,我用的是4G内存的版本,具体性能参数在树莓派的官网有,我这就不再赘述了,需要做一些比较大的项目的话可以选择内存8G的版本。树莓派的内存卡用16G以上的,然后烧录Ubuntu20.04 Server LTS的镜像,树莓派镜像下载和烧录请参照这个链接里的步骤

2.2.2 Xshell登录树莓派

2.pngimage.png

按照上图来连接好树莓派和电脑,然后登录路由器管理页面查看树莓派的IP,可以看到路由器分配给我们树莓派的IP是192.168.1.9。在电脑上的Xshell工具里(或者putty,没有的话可以去百度下载)

image.png

选择SSH,输入树莓派IP,默认端口号22不要改,最后点击连接。

image.png

image.png

image.png

image.png

image.png


这个镜像里树莓派的用户名是ubuntu,初始密码是ubuntu,第一次登录会强制修改原始密码,输入2次密码确认新修改的密码,下次登录就用新密码登录,登录成功会显示下面的内容。

image.png

设置管理员root,@前的ubuntu是普通用户,$是普通用户的标志,#是管理员的标志。我们可以设置管理员root,输入下面的指令,输入密码后可以切换到管理员root用户。root用户具有比ubuntu用户更高的权限。需要退出root用户的时候,请输入exit并回车

su


image.png

我们下次登录树莓派时发现时区不对,参考此链接查看如何更改时区

2.2.3 树莓派换源

ubuntu20.04的镜像服务器在国外,国内要访问和下载一些工具往往会受服务器连接稳定性和网速的影响,因此这一步我们可以把树莓派的镜像源更换为国内的,我这选的是USTC的源。请按以下步骤完成树莓派的换源。

sudo cp -p /etc/apt/sources.list /etc/apt/sources.list.bak   #备份树莓派的源
sudo vim /etc/apt/sources.list                               #用vim工具打开并编辑

image.png

按a进入--INSERT--模式,在每个黄色的deb前面加上#以注释掉该行。最后在文末增加如下代码。

# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse

编辑完如下图所示。然后按ESC退出--INSERT--模式,输入:wq保存修改并退出vim。

image.png

然后在命令行中先后输入以下2行代码,等待几分钟让树莓派自动更新源,如果提示【Y/N?】请输入Y并回车。

sudo apt update
sudo apt upgrade

2.2.4 设置树莓派静态IP

树莓派默认是DHCP自动获取动态IP的,因此我们在局域网里登录树莓派前必须查看树莓派IP,这就很麻烦。所以我们可以设置树莓派的静态IP,这就省去了每次登录WiFi管理页面查看树莓派IP地址了。咱们说干就干。参考这个视频的静态IP的设置方法

我们先输入下面一条命令获得树莓派网卡信息。

sudo apt install net-tools      #如果提示command 'ifconfig' not found,请先输入这行代码安装net-tools
ifconfig

image.png

eth0:是树莓派有线网卡的名称。

192.168.1.9 :是树莓派局域网当前的IP。

ll /etc/netplan/


我们输入上面指令并回车,查看netplan目录下有的文件。我们需要修改xx-cloud-init.yaml文件,我的是50-cloud-init.yaml,前面的50是随机数,每个人可能不一样,以你自己的为准

image.png

sudo vim /etc/netplan/50-cloud-init.yaml

输入上面的代码进入网卡配置文件编辑,编辑方法参考树莓派换源那个步骤。下面这是我的配置,以供参考。文件保存并退出。

image.png

输入以下代码执行netplan的变更操作。

sudo netplan apply

如果Xshell没反应或者有如下的提示,说明此时树莓派IP已更换,需要在Xshell里重新输入更改后的树莓派IP并重新登录。步骤参考Xshell登录树莓派

image.png

我们重新登陆上树莓派后可以通过ifconfig查看到树莓派IP变成了192.168.1.10

image.png

我们尝试通过ping一下百度,如果有ping成功说明此时我们树莓派是可以上网的。退出ping请输入Ctrl+C组合键。

ping baidu.com

image.png

可以看到我们ping成功了,说明到此为止树莓派基础配置已经完成。

三、frp内网穿透工具的配置

3.1. 申请一个阿里云服务器

学生专享免费领取服务器申请,按照步骤和提示,完成训练计划,点击免费领取,并完成相关任务,初步了解ECS云服务器。

image.png

我的云服务器选的是Ubuntu20.04 64位的系统,建议选这个系统,记住公网IP

image.png

image.png

点击【远程连接】后,选择第一个,以root用户登录,记住登录密码。

image.png

到这一步已经完成了云服务器的远程登录。

3.2 FTP配置

有时我们需要往服务器上传文件和下载文件,我采用FTP实现服务器端和客户端文件的互传。相关的配置过程如下。首先输入下行代码下载安装vsftpd工具。

sudo apt update
sudo apt upgrade      #更新源
sudo apt-get install vsftpd

安装完成以后使用vim打开。/etc/vsftpd.conf 进行配置,命令如下。

sudo vim /etc/vsftpd.conf

打开vsftpd.conf文件以后,找到如下两行。

local_enable=YES 
write_enable=YES 

确保上面2行代码前面没有“#”,有的话就取消掉,完成以后如下图所示。

   image.png

修改完后保存退出,并且输入以下命令重启FTP服务

sudo /etc/init.d/vsftpd restart

因为阿里云服务器有默认的安全组保护,所以我们要将FTP需要使用的端口放开使用。进入阿里云控制台,点击【更多】->【网络和安全组】->【安全组配置】

   image.png

之后点击【配置规则】,在【入方向】点击【手动添加】,配置端口20/21,源0.0.0.0/0,如下图所示。最后确定保存

image.png

链接:https://pan.baidu.com/s/18AlkpBGqDWiiFIhnQhHSHA?pwd=x5t2

提取码:x5t2

点开链接下载【FileZilla】,按照安装步骤一直下一步就可以了,然后打开软件,点击【站点管理器】

image.png

image.png

当出现下图所示信息,说明已经FTP已经成功连上了阿里云服务器,此时我们就可以往服务器上传和下载文件了。

image.png

树莓派端也可以通过FTP很方便地传输文件,在【站点管理器】那页输入树莓派的局域网ip(192.168.1.10)即可。我们就可以很方便地通过局域网给树莓派上传文件了。

3.3 frp的下载

打开网盘链接可以下载我的frp文件。

链接:https://pan.baidu.com/s/1GlIqBB-9PjHo6NfMD68F5Q?pwd=6p70

提取码:6p70

image.png

需要注意的是,请把linux_386的文件通过【FileZilla】发送到阿里云服务器的/opt/目录下,linux_arm64的文件发送到树莓派的/opt/目录下。如果树莓派的文件传输不了,提示permission denied,是因为我们登录的ubuntu用户没有权限操作/opt目录里的文件,即没有权限往/opt里传输文件。请按照这个链接里的步骤操作,然后在FileZilla这个软件里使用root和密码登录树莓派再传输文件到/opt。我们可以很方便地使用鼠标拖动文件的方式是实现文件地传输操作,这里我就不过多操作了,请你自己亲自操作尝试一下。

3.4 frp配置

3.4.1 阿里云服务器端的frp配置和frps服务开启

输入以下命令进入/opt目录,有一个frp的tar.gz的压缩包,我们输入指令解压它。然后进入解压出来的文件夹。

cd /opt/                                    #进入opt目录
ls                                          #列出目录下的文件
tar zxvf frp_0.37.0_linux_386.tar.gz        #解压文件
cd frp_0.37.0_linux_386/

image.png

解压出来的文件有如上所示的几个文件。阿里云的配置需要修改frps.ini这个文件。

vim frps.ini

image.png

保存配置后退出,我们还需要拷贝2个文件。输入以下2个命令拷贝文件。

cp frps /usr/local/bin/frps
mkdir /etc/frp/                   #创建/etc/frp/这个目录
cp frps.ini /etc/frp/frps.ini     #如果提示No such file or directory,请先执行上一条命令

在我们解压的文件里,还有一个systemd文件夹,进入systemd文件夹查看里面的文件。我们还需要配置一下frps自启动的服务。使用vim工具进行编辑。

image.png

cd systemd
ls
vim frps.service

这个文件我们只需要修改ExecStart这一行代码,这行代码的意思是frps这个服务的开启路径,把frps和frps.ini这2个文件的路径相应地填进去就可以了。下面这行是我自己配置的路径,请相应的改为你自己的路径,经供参考!

ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini   

image.png

保存后退出。输入以下命令把上面修改的文件复制到/etc/systemd/system/目录下

cp frps.service /etc/systemd/system/

然后输入以下几行代码让它能开机自动启动frps这项服务

systemctl daemon-reload             #重载
systemctl start frps.service        #启动frps服务
systemctl enable frps.service       #使能开机自动启动frps服务
systemctl status frps.service       #查看frps服务的当前状态

验证frps是否开机自动启动,先输入reboot让云服务器重启,然后重新登录上云服务器输入systemctl status frps.service查看。如果出现下图所示的提示【active(running)】说明已经成功配置了开机自动启动服务。

image.png


3.4.2 树莓派客户端的frp配置和frpc服务开启

树莓派的配置与云服务器端的配置相似,不同的是树莓派作为客户端需要配置的相关文件是frpc.ini,frpc ,frpc.service这三个。

image.png

这里讲解一下frpc.ini文件的配置,这里请记住用到的端口6000和端口7000。

image.png

[common]
server_addr = 0.0.0.0   #frp服务端地址,可以填ip或者域名,这里假设为0.0.0.0
server_port = 7000      #frp服务端端口,即填写服务端配置中的 bind_port
[ssh]
type = tcp              #连接类型,填tcp或udp
local_ip = 127.0.0.1    #填127.0.0.1或内网ip都可以
local_port = 22         #需要转发到的端口,ssh端口是22
remote_port = 6000      #frp服务端的远程监听端口,即你访问服务端的remote_port就相当于访
                        #问客户端的 local_port,如果填0则会随机分配一个端口

然后是修改frpc.service文件,需要注意的是frpc.service ,不是frps.service。配置的内容如下图。

image.png

红框里的路径根据你的树莓派的配置路径填写,这是我的,仅供参考。然后通过以下命令复制frpc.service到指定目录。

cp frpc.service /etc/systemd/system/

下面重载服务并允许开启启动

systemctl daemon-reload             #重载
systemctl start frpc.service        #启动frps服务
systemctl enable frpc.service       #使能开机自动启动frps服务
systemctl status frpc.service       #查看frps服务的当前状态


3.5 云服务器端安全组设置

还记得之前要记住的6000和7000的端口号吗?阿里云服务器的安全组和我们个人电脑的防火墙概念类似,目的是保护我们服务器不被黑客肆意攻击破坏,所以我们上面已经配置好服务端和客户端但还是不能实现内网穿透,原因在于我们还没有给frp需要的端口开启服务,这一步我们就需要开启6000和7000端口。

进入阿里云控制台,点击【更多】->【网络和安全组】->【安全组配置】,之后点击【配置规则】,在【入方向】点击【手动添加】,配置端口6000/7000,源0.0.0.0/0,如下图所示。最后确定保存。

image.png


四 测试

我使用的测试工具是手机APP【JuiceSSH】,为了证明是外网登录树莓派,我断开手机的WiFi连接,使用4G流量登录树莓派。

点击【快速连接】然后选择SSH,输入[username@]server_addr[:port],输入密码后就可以登录了。

image.png

image.png

上面登录使用username的是你树莓派的用户名(root或者ubuntu),server_addr是阿里云服务器的公网IP,port 6000就是设置的 remote_port,最后的登录密码是树莓派的密码,而不是阿里云服务器的密码,这一点一定要注意。

五 总结与祝愿

通过这个外网访问家里树莓派的实例,我们学习了通过frp来实现内网穿透,通过对7000端口和6000端口的操作,了解到frp内网穿透的原理是通过一种反向代理的技术实现的。前期我们只开通了SSH的服务,后面我们如果需要搭建个人博客或者通过内网穿透操控树莓派管理家里的智能家具、家庭文件管理系统等等丰富的应用场景,我们还可以配置相关文件和端口。

在阿里云平台我们可以不仅可以学习物联网的知识,还能利用阿里云平台实现自我价值的一种体现,我在这发布我的内容和实践,通过这个开发者开放的平台,我们相互交流共同进步。

最后在这里,我祝大家新年快乐!工作顺利!家庭和睦!学习进步!


相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11天前
|
弹性计算 运维 安全
阿里云轻量应用服务器与ECS的区别及选择指南
轻量应用服务器和云服务器ECS(Elastic Compute Service)是两款颇受欢迎的产品。本文将对这两者进行详细的对比,帮助用户更好地理解它们之间的区别,并根据自身需求做出明智的选择。
|
1月前
|
网络安全 开发工具 数据安全/隐私保护
自建内网穿透服务器
本文介绍了如何使用FRP实现内网穿透。首先准备一台具有公网IP的云服务器和一台内网服务器,接着在云服务器上安装Docker和FRP服务端,配置`frps.ini`文件并启动服务。在内网服务器上手动安装FRP客户端,配置`frpc.ini`文件并启动服务。最后通过FRP控制台验证连接状态,确保可以通过公网IP访问内网服务。
203 10
自建内网穿透服务器
|
29天前
|
存储 弹性计算 安全
阿里云服务器ECS详解:云服务器是什么,云服务器优势和应用场景及价格参考
云服务器ECS是阿里云众多云产品中,最受用户关注的产品,阿里云服务器提供多样化的计算能力,支持x86、Arm架构,涵盖CPU、GPU等多种服务器类型,满足各种用户需求。本文为大家详细介绍阿里云服务器是什么?云服务器的优势和应用场景,以及最新价格情况,以供大家参考。
|
29天前
|
负载均衡 数据可视化 API
像素流送api ue多人访问需要什么显卡服务器
本文总结了关于像素流送技术的五大常见问题,包括是否支持Unity模型推流、UE多人访问的最大并发数、所需服务器配置、稳定性问题及API支持情况,旨在帮助开发者更好地理解和应用这一技术。
52 1
|
2月前
|
机器学习/深度学习 弹性计算 运维
云计算系列之阿里云ECS服务器管理实战
本文档介绍了阿里云ECS(Elastic Compute Service)的基本概念、实例管理、磁盘操作、快照与镜像功能及其应用场景,最后通过具体案例解析ECS的实际应用。ECS是阿里云提供的高效、可靠的云计算服务,支持多种业务需求,如Web应用、高并发网站、数据库等,帮助企业快速构建稳定安全的应用,提升运维效率,降低IT成本。文档还详细说明了ECS实例的创建方式、连接方法及日常管理操作,帮助用户更好地利用ECS服务。
91 2
云计算系列之阿里云ECS服务器管理实战
|
1月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
1月前
|
存储 弹性计算 数据库
阿里云服务器ECS产品试用、ECS试用攻略、试用宝典及试用产品续用相关活动介绍
阿里云服务器ECS产品免费试用是阿里云为新手用户提供的免费体验的权益,旨在为新手开发者提供 0 成本高质量的上云体验服务,打造开放,敏捷的开发者环境。阿里云为广大用户提供基础版、企业版试用产品服务(二选一),帮您0门槛轻松体验1个月,基础版最高可试用4核 (vCPU) 8 GiB配置,企业版最高可最高可试用8核 (vCPU) 16 GiB。本文为大家介绍云服务器ECS产品试用、试用宝典、ECS试用攻略及试用产品续用相关活动,以供参考。
|
2月前
|
弹性计算 数据库连接 Nacos
阿里云ECS服务器在docker中部署nacos
docker pull nacos 失败,docker部署nacos遇到的问题,nacos数据库连接,nacos端口映射
210 1
|
1月前
|
弹性计算
阿里云2核16G云服务器多少钱?亲测ECS内存型r8i租赁价格
阿里云2核16G云服务器,内存型r8i实例1年6折优惠后价格为1901元,月付334.19元,按小时计费0.696221元。更多配置及优惠详情,请访问阿里云ECS页面。
|
2月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?

热门文章

最新文章