一招教会你基于阿里云ECS服务器实现【内网穿透SSH访问家庭树莓派】
一、个人自我介绍
大家好,我是一名大四的学生,就读的专业是机器人工程,首要学的是机器人学根底、工业机器人仿真技能、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登录树莓派
依照上图来衔接好树莓派和电脑,然后登录路由器办理页面检查树莓派的IP,能够看到路由器分配给咱们树莓派的IP是192.168.1.9。在电脑上的Xshell东西里(或许putty,没有的话能够去百度下载)
挑选SSH,输入树莓派IP,默许端口号22不要改,最终点击衔接。
这个镜像里树莓派的用户名是ubuntu,初始暗码是ubuntu,第一次登录会强制修正原始暗码,输入2次暗码承认新修正的暗码,下次登录就用新暗码登录,登录成功会显现下面的内容。
设置办理员root,@前的ubuntu是普通用户,$是普通用户的标志,#是办理员的标志。咱们能够设置办理员root,输入下面的指令,输入暗码后能够切换到办理员root用户。root用户具有比ubuntu用户更高的权限。需求退出root用户的时候,请输入exit并回车
su
咱们下次登录树莓派时发现时区不对,参阅此链接检查怎么更改时区。
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东西翻开并修正
按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。
然后在指令行中先后输入以下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
eth0:是树莓派有线网卡的称号。
192.168.1.9 :是树莓派局域网当时的IP。
ll /etc/netplan/
咱们输入上面指令并回车,检查netplan目录下有的文件。咱们需求修正xx-cloud-init.yaml文件,我的是50-cloud-init.yaml,前面的50是随机数,每个人可能不一样,以你自己的为准。
sudo vim /etc/netplan/50-cloud-init.yaml
输入上面的代码进入网卡装备文件修正,修正办法参阅树莓派换源那个过程。下面这是我的装备,以供参阅。文件保存并退出。
输入以下代码执行netplan的变更操作。
sudo netplan apply
假如Xshell没反应或许有如下的提示,阐明此刻树莓派IP已替换,需求在Xshell里从头输入更改后的树莓派IP并从头登录。过程参阅Xshell登录树莓派。
咱们从头登陆上树莓派后能够经过ifconfig检查到树莓派IP变成了192.168.1.10
咱们尝试经过ping一下百度,假如有ping成功阐明此刻咱们树莓派是能够上网的。退出ping请输入Ctrl+C组合键。
ping baidu.com
能够看到咱们ping成功了,阐明到此为止树莓派根底装备现已完结。
三、frp内网穿透东西的装备
3.1. 请求一个阿里云服务器
学生专享免费收取服务器请求,依照过程和提示,完结训练方案,点击免费收取,并完结相关使命,初步了解ECS云服务器。
我的云服务器选的是Ubuntu20.04 64位的体系,建议选这个体系,记住公网IP。
点击【长途衔接】后,挑选第一个,以root用户登录,记住登录暗码。
到这一步现已完结了云服务器的长途登录。
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行代码前面没有“#”,有的话就撤销掉,完结今后如下图所示。
修正完后保存退出,并且输入以下指令重启FTP服务
sudo /etc/init.d/vsftpd restart
因为阿里云服务器有默许的安全组维护,所以咱们要将FTP需求运用的端口放开运用。进入阿里云控制台,点击【更多】->【网络和安全组】->【安全组装备】
之后点击【装备规则】,在【入方向】点击【手动增加】,装备端口20/21,源0.0.0.0/0,如下图所示。最终确认保存
链接:https://pan.baidu.com/s/18AlkpBGqDWiiFIhnQhHSHA?pwd=x5t2
提取码:x5t2
点开链接下载【FileZilla】,依照安装过程一直下一步就能够了,然后翻开软件,点击【站点办理器】
当呈现下图所示信息,阐明现已FTP现已成功连上了阿里云服务器,此刻咱们就能够往服务器上传和下载文件了。
树莓派端也能够经过FTP很方便地传输文件,在【站点办理器】那页输入树莓派的局域网ip(192.168.1.10)即可。咱们就能够很方便地经过局域网给树莓派上传文件了。
3.3 frp的下载
翻开网盘链接能够下载我的frp文件。
链接:https://pan.baidu.com/s/1GlIqBB-9PjHo6NfMD68F5Q?pwd=6p70
提取码:6p70
需求留意的是,请把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/
解压出来的文件有如上所示的几个文件。阿里云的装备需求修正frps.ini这个文件。
vim frps.ini
保存装备后退出,咱们还需求拷贝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东西进行修正。
cd systemd ls vim frps.service
这个文件咱们只需求修正ExecStart这一行代码,这行代码的意思是frps这个服务的敞开途径,把frps和frps.ini这2个文件的途径相应地填进去就能够了。下面这行是我自己装备的途径,请相应的改为你自己的途径,经供参阅!
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
保存后退出。输入以下指令把上面修正的文件仿制到/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)】阐明现已成功装备了开机主动发动服务。
3.4.2 树莓派客户端的frp装备和frpc服务敞开
树莓派的装备与云服务器端的装备相似,不同的是树莓派作为客户端需求装备的相关文件是frpc.ini,frpc ,frpc.service这三个。
这儿讲解一下frpc.ini文件的装备,这儿请记住用到的端口6000和端口7000。
[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。装备的内容如下图。
红框里的途径根据你的树莓派的装备途径填写,这是我的,仅供参阅。然后经过以下指令仿制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,如下图所示。最终确认保存。
四 测验
我运用的测验东西是手机APP【JuiceSSH】,为了证明是外网登录树莓派,我断开手机的WiFi衔接,运用4G流量登录树莓派。
点击【快速衔接】然后挑选SSH,输入[username@]server_addr[:port],输入暗码后就能够登录了。
上面登录运用username的是你树莓派的用户名(root或许ubuntu),server_addr是阿里云服务器的公网IP,port 6000就是设置的 remote_port,最终的登录暗码是树莓派的暗码,而不是阿里云服务器的暗码,这一点一定要留意。
五 总结与祝愿
经过这个外网拜访家里树莓派的实例,咱们学习了经过frp来完成内网穿透,经过对7000端口和6000端口的操作,了解到frp内网穿透的原理是经过一种反向署理的技能完成的。前期咱们只开通了SSH的服务,后边咱们假如需求搭建个人博客或许经过内网穿透操控树莓派办理家里的智能家具、家庭文件办理体系等等丰富的使用场景,咱们还能够装备相关文件和端口。
在阿里云渠道咱们能够不仅能够学习物联网的常识,还能运用阿里云渠道完成自我价值的一种体现,我在这发布我的内容和实践,经过这个开发者开放的渠道,咱们彼此沟通共同前进。
最终在这儿,我祝大家新年快乐!工作顺利!家庭和睦!学习前进!
我有话说: