在公司使用家里树莓派的 ftp 服务

本贴最后更新于 1220 天前,其中的信息可能已经斗转星移

买了一块树莓派吃灰一年多了,百度会员也快过期了,正好趁双十二买个硬盘当云盘使。

材料清单:

云服务器(任意一 厂家)
树莓派 3B+
TF 卡(建议 8G)
硬盘(买了一块 2T 的,机械就好)
可外接电源的硬盘盒(保护硬盘用,而且树莓派 usb 口供电不够,需要外接电源)

步骤一:

树莓派烧录系统,安装系统,打开 ssh,使用 xshell 连接树莓派,不会可以看树莓派实验室

步骤二:挂载硬盘

因为我的硬盘文件系统是 exfat,所以可以直接挂载,其他文件系统的硬盘挂载方式文后有链接
查看硬盘状态:sudo fdisk -l

IOCSGX56.png

如果看不到,排除接线问题后,可能是硬盘供电不足的原因

然后 df -h 查看是否已自动挂载

002.png

发现没有挂载,已经挂载也可以重新挂载
先创建一个目录 sudo mdkir /home/pi/sda
然后使用 mount 挂载 sudo mount /dev/sda2 /home/pi/sda/
值得一提的是,如果你本身在挂载目录使用挂载命令,挂载成功后使用 ls 命令查看硬盘里的文件是看不到的,需要重新使用 cd 命令进入目录

003.png

当然,也可以使用 df -h 命令查看挂载情况

004.png

步骤三:云服务器安装 frp 工具

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。(Ctrl+C、Ctrl+V)
首先从 github 下载安装包:
在 github 上找到 frp 项目:https://github.com/fatedier/frp,进入下载目录:

005.png

下载对应系统版本的压缩包

006.png

使用 ftp 工具将压缩包上传到云服务器,在用户目录创建 app/frp 目录(个人习惯将新安装的软件安装在 app 中),将 frp 压缩包移动到该目录,解压 tar -zxvf frp_0.34.3_linux_386.tar.gz
打开目录
frpc 表示客户端,frps 表示服务端,.ini 文件是配置文件

007.png

修改 frps.ini 配置文件

008.png

服务端只需要打开一个端口以监听客户端请求即可,我打开的是 10001,配置好端口后,一定要记得打开安全组
运行 frps 命令:./frps -c frps.ini

步骤四:树莓派安装 frp 工具

因为树莓派属于 arm 架构,所以下载的包应该是 frp_0.34.3_linux_arm.tar.gz

009.png

使用 ftp 工具将包下载到树莓派上,解压 tar -zxvf frp_0.34.3_linux_arm.tar.gz,进入目录
修改 frpc.ini 文件

010.png

server_addr 是云服务器的 ip 地址
server_port 是 frps 监听的端口
除[common]代表与 frp 服务器的连接外,其余[]都可看做是内网穿透连接的别名,
local_ip 是本机的 ip
local_port 是本机要暴露出去的端口
remote_port 是表示 frp 服务端将要监听的端口,发送到服务端该端口的数据流将转发到本地的 local_port 端口
ftp21 是 ftp 默认的命令端口,ftpdata1、ftpdata2、ftpdata3 的配置会在后文介绍
frp 客户端打开命令:frpc -c frpc.ini

步骤五:配置 ftp

首先要讲一下 ftp 的两种工作模式
主动模式:也是默认使用的模式
ftp 客户端通过任意非特殊的端口连接入 ftp 服务器的命令端口--21
ftp 客户端通过另外一非特殊端口监听,并通过该端口发送命令给 ftp 服务器,并将该端口号作为数据端口发送给 ftp 服务器
ftp 服务器会反过来连接用户指定的数据端口
但是,ftp 服务器用来连接客户端数据端口的端口并不是固定的,又因为我们通过 frp 做内网穿透需要指定端口,所以无法使用主动模式来使用 ftp
被动模式:为了解决服务器发起到客户端的连接的问题,人们开发出一种不同的 ftp 连接方式,就是被动模式,也叫 PASV,流程如下
ftp 客户端通过任意非特殊端口连接入 ftp 服务器的命令端口--21
服务器监听到由连接命令端口的连接后,会打开另外一非特殊端口作为数据端口,并将端口号发送给客户端
客服端拿到端口号后,开启另一非特殊端口连接服务器该端口,并传输数据
ps:非特殊端口一般指大于 1024 的端口
由于 ftp 默认使用主动模式,所以我们要打开被动模式
首先查看树莓派 ftp 服务所使用的配置文件,这里使用 ps -ef | grep ftp 命令

011.png

使用管理员方式修改该文件 sudo vim /etc/vsftpd.conf
增加以下配置:

012.png

同时修改

013.png

014.png

其中,pasv_min_port 和 paxv_max_port 表示使用 10020-10022 端口作为数据端口,所以我们需要使用 frp 将 10020~10022 端口开放
pasv_address 是服务器 ip 地址,我使用的是 ipv4 地址,所以将 listen 修改为 YES,注释掉 listen_ipv6
保存配置文件后,重启 ftp

015.png

最后:现在可以使用 ftp 工具连接树莓派了

016.png

我这里使用的是 xftp,注意:要改为被动模式连接

018.png

其他:开机自启与后台运行
以上操作后,每次使用 ftp 都需要先连接到树莓派,然后再打开 ftp,有时把不能即时连接到树莓派,所以开机自启是非常有必要的
创建以下文件:
sudo vim /lib/systemd/system/frpc.service
内容:

019.png

保存后,启动 ftp 并设置开机启动
sudo systemctl enable frpc
sudo systemctl start frpc
sudo systemctl status frpc

020.png

服务器也可使用相同配置,不过我一般习惯后台运行并输出日志
在 frp 软件目录下
nohup ./frps -c frps.ini > /root/app/frp/frp_0.34.3_linux_386/log 2>&1 &
以上命令会后台运行 frps 并记录日志

树莓派挂载移动硬盘或 U 盘

可以参考树莓派实验室-给树莓派挂载移动硬盘或 U 盘
我没有试过,因为我没有别的存储设备了 →_→

后记:

网速好慢。。。

  • 树莓派
    22 引用 • 23 回帖 • 1 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    15 引用 • 7 回帖 • 10 关注
  • 内网穿透
    25 引用 • 144 回帖 • 2 关注
  • FTP
    19 引用 • 20 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 云服务器小水管当然慢了,大水管又买不起。所以动态域名代理是个好东西,让运营商给你开公网 ip,买个域名吧trollface