基于阿里云ECS内网穿透SSH访问家庭树莓派

简介: 文本介绍如何利用frp内网穿透工具实现外网访问家里的树莓派,方便以后工作在外远程访问家里的树莓派。此教程适合树莓派小白从零开始配置树莓派。

文本介绍如何利用frp内网穿透工具实现外网访问家里的树莓派,方便以后工作在外远程访问家里的树莓派。此教程适合树莓派小白从零开始配置树莓派。

准备工作

1. 材料准备

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

2. 树莓派设置

2.1 树莓派镜像烧录

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

2.2 Xshell登录树莓派

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

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

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

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

su

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

2.3 树莓派换源

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

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

0ecfab1678e54f918c43e86497e8934e按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。

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

sudo apt update
sudo apt upgrade

2.4 设置树莓派静态IP

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

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

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

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

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

ll /etc/netplan/

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

7192e7b0512c4c3e8a9b39e17179b992

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

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

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

sudo netplan apply

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

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

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

ping baidu.com

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

frp内网穿透工具的配置

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

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

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

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

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

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行代码前面没有“#”,有的话就取消掉,完成以后如下图所示。

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

sudo /etc/init.d/vsftpd restart

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

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

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

提取码:x5t2

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

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

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

3. frp的下载

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

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

提取码:6p70

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

4. frp配置

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/

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

vim frps.ini

c31625631586432e91f6236b8757d8a4保存配置后退出,我们还需要拷贝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工具进行编辑。

5d12d4ddf92948089042af964eaba57b

cd systemd
ls
vim frps.service

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

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

65d239aceb5d4bb3880354ef89b13668保存后退出。输入以下命令把上面修改的文件复制到/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)】说明已经成功配置了开机自动启动服务。

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

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

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

4f0b5aed1ee74173bf7eb9eef3f5c54a

[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。配置的内容如下图。

1b505772fd96441ca45709cafa265c9c红框里的路径根据你的树莓派的配置路径填写,这是我的,仅供参考。然后通过以下命令复制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服务的当前状态

5. 云服务器端安全组设置

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

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

8d72a53092f34c609830bb23e4cd3142 (1)

效果测试

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

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

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

前期只开通了SSH的服务,如果需要搭建个人博客或者通过内网穿透操控树莓派管理家里的智能家具、家庭文件管理系统等等丰富的应用场景,还可以配置相关文件和端口。

本文转载自飞天加速计划,作者为机器人工程专业大四学生:https://developer.aliyun.com/article/864852

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 数据挖掘 Windows
服务器数据恢复—V7000存储raid5故障导致LUN无法访问的数据恢复案例
服务器数据恢复环境: 三台V7000存储,共有64块SAS硬盘(其中有三块热备盘,其中一块已启用)组建了数组raid5阵列。分配若干LUN,上层安装Windows server操作系统,数据分区格式化为NTFS文件系统。 服务器故障: V7000存储中有多块硬盘出现故障离线,阵列失效,LUN无法访问。需要恢复卷中所有数据(主要为dcm文件)。
|
5月前
|
存储 弹性计算 大数据
阿里云服务器怎么样?全访问解析云服务器ECS功能、租用、优缺点及使用说明
阿里云ECS是弹性计算服务,提供安全可靠的云服务器,包括多种实例规格如经济型、通用型、计算型等,适合不同场景。ECS支持VPC专有网络、快照与镜像、多种付费模式。用户可根据业务需求选择实例、存储类型和网络配置。阿里云服务器适用于Web应用、游戏、大数据和深度学习等场景,提供免费试用和不同优惠套餐。众多知名企业如新浪微博等信赖阿里云服务。更多信息可访问阿里云官方网站。
290 5
|
28天前
|
负载均衡 数据可视化 API
像素流送api ue多人访问需要什么显卡服务器
本文总结了关于像素流送技术的五大常见问题,包括是否支持Unity模型推流、UE多人访问的最大并发数、所需服务器配置、稳定性问题及API支持情况,旨在帮助开发者更好地理解和应用这一技术。
52 1
|
2月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
62 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
人工智能 网络协议 Shell
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
92 1
|
2月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
|
2月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
3月前
|
人工智能 网络协议 Shell
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
85 0
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
|
2月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
42 0
|
2月前
|
弹性计算 关系型数据库 网络安全
阿里云国际版无法连接和访问Windows服务器中的FTP服务
阿里云国际版无法连接和访问Windows服务器中的FTP服务

热门文章

最新文章