• 正文
  • 相关推荐
申请入驻 产业图谱

从FTP踩坑到SFTP真香:树莓派文件传输避坑指南,被动模式/防火墙/端口转发一次说透!

06/01 16:22
287
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

树莓派 FTP 服务器可以将这台小巧、实惠的计算机从一个学习工具,转变为能够处理真实基础设施任务的强大解决方案。其中最实用的用途之一就是把树莓派变成文件服务器。通过使用 FTP 或 SFTP,你可以在计算机之间传输文件、自动化备份,或在局域网甚至远程环境中共享数据。

本文解释了在树莓派语境下 FTP 的含义,对比了可用的文件传输协议,并详细介绍了推荐的 SFTP 搭建方案以及 FTP 替代方案。重点在于简单性、安全性和实际可用性。

 

树莓派上的 FTP 是什么?

在实践中,树莓派上的 FTP 使用这种标准网络协议在客户端与作为服务器的树莓派之间移动文件。运行树莓派上的 FTP 时,树莓派充当服务器,监听传入连接,并允许经过身份验证的用户上传或下载文件。

传统上,FTP 被用于网站管理、内部文件共享和系统维护。然而,经典 FTP 以明文方式发送数据和密码,如果使用不当或通过互联网使用,会带来安全风险。

 

为什么用树莓派做文件服务器?

使用树莓派文件服务器方案有以下几个优势:

低成本、低功耗

全天候可用

体积小巧、静音运行

非常适合学习网络和 Linux 基础知识

尽管体积小巧,树莓派仍可可靠地为家庭实验室、小型办公室、物联网项目和开发环境提供文件服务。

 

常见用例

局域网上的集中文件存储

物联网设备传输日志或数据

从 PC 或服务器自动备份

在 Linux、Windows 和 macOS 之间共享文件

满足简单树莓派网络存储需求的轻量级 NAS 替代方案

 

迷你真实项目:用树莓派搭建自动化备份与数据投递服务器

树莓派 SFTP 服务器通常不仅仅用于手动传输文件,还被用来创建一个轻量级、全天候的自动化中心。本节展示一个实际场景:将你的树莓派变成网络中其他设备的中央数据接收端和备份节点。

场景:自动从多台设备收集数据

假设你有:

需要每日夜间自动备份的台式电脑

需上传传感日志的 ESP32 等物联网设备

连接 WiFi 后需同步项目文件的笔记本电脑

需要集中存储测试数据的家庭实验室设备

无需部署笨重的 NAS 设备,树莓派可依托 SFTP 安全传输协议,搭建低功耗、高安全的数据接收服务器。

树莓派的核心优势在此场景中充分体现:

永久在线运行,功耗低于10瓦

无风扇静音运行

可稳定执行定时文件传输任务

步骤一:创建专属数据存储目录

创建结构化存储文件夹,规范文件分类,优化数据传输管理流程,执行以下命令:

 sudo mkdir -p /srv/data/{pc_backup,iot_uploads,lab_results} sudo chown -R ftp_sunfounder:ftp_sunfounder /srv/data

该操作可将自动化上传文件与系统文件完全隔离,目录结构如下:

/srv/data/ ├── pc_backup/ ├── iot_uploads/ └── lab_results/

步骤二:限制 SFTP 用户访问目录(安全隔离)

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

添加:

Match User ftp_sunfounder    ChrootDirectory /srv/data    ForceCommand internal-sftp    X11Forwarding no    AllowTCPForwarding no

重启SSH:

sudo systemctl restart ssh

配置完成后,该账号仅可对指定目录进行文件上传、下载操作,无法访问系统核心文件,树莓派将变为专用文件服务设备,而非通用登录终端。

步骤三:Linux/macOS 设备自动备份配置

执行单次同步测试:

rsync over SSH (secure + efficient). rsync -avz ~/Documents/ ftp_sunfounder@raspberrypi:/pc_backup/To automate nightly:crontab -e

添加:

0 2 * * * rsync -avz ~/Documents/ftp_sunfounder@raspberrypi:/pc_backup/

配置完成后,树莓派将每日凌晨自动接收电脑文档备份文件。

步骤四:Windows 设备自动上传配置(WinSCP 脚本)

Windows 系统可通过 WinSCP 脚本实现自动化文件上传,脚本示例:

open sftp://ftp_sunfounder:password@192.168.1.50 put C:Logs* /lab_results/ exit

将脚本添加至系统任务计划程序,即可实现 Windows 设备文件全自动推送上传。

步骤五:物联网设备传感日志上传

多数嵌入式设备支持 SCP/SFTP 上传协议,基于 Linux 的边缘设备可使用以下命令上传传感日志:

scp sensor.csv ftp_sunfounder@192.168.1.50:/iot_uploads/

至此,树莓派可作为物联网数据集中接收节点,无需云端服务器即可实现远程数据传输归集。

步骤六:配置文件自动整理(可选、实用进阶功能)

可通过定时脚本自动整理、压缩过期文件,释放设备存储空间,创建脚本文件:

nano /usr/local/bin/organize_uploads.sh#!/bin/bashfind /srv/data/iot_uploads -type f -mtime +7 -exec gzip {} ;

赋予脚本执行权限:

chmod +x /usr/local/bin/organize_uploads.sh

设置每日凌晨3点30分自动执行:

30 3 * * * /usr/local/bin/organize_uploads.sh

配置完成后,系统会自动压缩7天以上的老旧上传文件,高效节省存储资源。

 

为什么此方法优于运行完整NAS

树莓派SFTP服务器 完整NAS系统
功耗低于10W 功耗25–60W
维护简单 需配置网页后台与服务
无需数据库 系统占用资源高
部署快速 部署流程繁琐
适配自动化运维场景 交互式文件存储

对于开发者、家庭实验室和物联网场景,树莓派 SFTP 是性价比极高的轻量化解决方案。

 

适用场景说明

树莓派 FTP/SFTP 方案最适合以下需求:

搭建安全的自动化数据传输节点

搭建数据归集临时中转服务器

低成本搭建文件备份终端

打通嵌入式设备与电脑的数据传输壁垒

学习 Linux 系统与网络通信原理

该方案不替代企业级 NAS 设备,但完全满足边缘基础设施、家用运维、小型开发场景的使用需求。

核心总结

在树莓派上部署 FTP/SFTP 服务,不止是简单的文件传输功能,更是将设备转化为小型永久在线基础设施节点,可稳定承载数据备份、文件同步、设备数据归集等核心任务,是树莓派在家庭实验室、小型工程场景中最具实用性的落地项目之一。

 

协议对比:FTP、SFTP、SMB 如何选择

协议核心差异解析

FTP:经典文件传输协议,操作简单,默认无加密,安全性差

SFTP:基于 SSH 的文件传输协议,全程加密、安全性高、兼容性广

SMB:Windows 专属文件共享协议,适合映射网络磁盘使用

安全性对比

原生 FTP 无任何加密机制,账号密码与传输数据均为明文传输,仅可通过 FTPS 拓展协议实现加密;SMB 协议在可信局域网内安全性良好,但不适合公网暴露;SFTP 基于 SSH 协议全程加密,无需额外配置,是三者中安全性最高的协议。

https://datatracker.ietf.org/doc/html/rfc959

 

选型推荐:优先选择 SFTP

绝大多数树莓派文件传输场景,SFTP 为最优选择。无需安装额外软件、默认加密安全、全平台兼容、配置简单,完美适配日常使用与生产环境。

部署前置要求

带网络功能的任意型号树莓派

大容量文件存储需搭配 U 盘或固态硬盘

Raspberry Pi OS 轻量版/桌面版系统

 

树莓派前期准备

系统更新

部署服务前必须更新系统,修复漏洞、提升稳定性,搭配防火墙规则可进一步保障设备安全:树莓派防火墙配置指南

完整教程:如何在树莓派上配置防火墙?

树莓派更新:确保系统安全且优化的关键步骤!

重要提示:找到树莓派的IP地址:hostname -I

开启 SSH 服务

SFTP 服务依赖 SSH,需提前开启:树莓派家庭自动化安全指南

https://www.sunfounder.com/blogs/news/raspberry-pi-home-automation-the-ultimate-guide-to-building-your-smart-home-system

sudo raspi-config

进入「接口选项」,开启 SSH 功能。

精通远程控制:借助树莓派释放 SSH 的强大功能!

 

协议选型指南

使用 SFTP 的场景

需要安全加密传输文件

公网远程访问设备

搭配脚本实现自动化传输

生产环境、专业运维场景

使用 FTP 的场景

legacy系统

封闭、可信的内网环境

不支持 SFTP 的设备

 

搭建 SFTP 服务(推荐)

选项A:SFTP使用openssh

为什么SFTP已经可用

树莓派系统默认预装 OpenSSH 服务,开启 SSH 后 SFTP 自动启用,无需额外安装软件,零成本实现安全文件传输。

不需要额外的软件

开启SSH后,SFTP自动开启

在树莓派上检查SFTP

1.检查SSH服务状态

sudo systemctl status ssh

2.创建用户

有两个主要原因:

安全性:如果有人获得了SFTP凭据的访问权限,他们将只能访问特定的用户账户,而不是整个系统。这限制了潜在的损害并保护了重要的系统文件。

受控文件访问:通过将用户分配到专用目录,您可以将他们限制在一个文件夹中。这被称为克鲁特监狱。它阻止用户浏览完整的Linux文件系统。

为文件传输创建专用用户:

sudo adduser ftp_sunfounder

3.配置权限

创建一个文件夹给文件访问

sudo mkdir /home/sftp_sunfounder/filessudo chown ftp_sunfounder: ftp_sunfounder /home/sftp_sunfounder /filessudo chmod 755 /home/sftp_sunfounder/files

4.本地连接测试

在树莓派本地测试

sftp ftp_sunfounder@localhost

远程连接测试

从其他电脑通过winscp连接

https://winscp.net/eng/docs/lang:chs

搭建FTP服务(备选方案)

选项B: FTP使用vsftpd

什么时候适用FTP

FTP仍能用于老旧设备和特殊兼容场景:FPT使用场景概览

安装配置vsftpd

1.安装vsftpd

sudo apt install vsftpd

2.基础参数配置

sudo nano /etc/vsftpd.conf

listen=YESanonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESuse_localtime=YESxferlog_enable=YESconnect_from_port_20=YESchroot_local_user=YESallow_writeable_chroot=YES

参数释义:

•anonymous_enable=NO: 关闭匿名登录

•local_enable=YES: 允许系统用户登录

•write_enable=YES: 开启文件读写权限

•chroot_local_user=YES: 锁定用户至专属目录

•allow_writeable_chroot=YES: 开启可写入权限

 

创建 FTP 专属用户与权限

1.创建用户

sudo adduser ftp_sunfounder

默认情况下,当chroot_local_user=YES时,用户将被限制为:/home/ftp_sunfounder/files

2. 配置权限

sudo chown ftp_sunfounder:ftp_sunfounder /home/ftp_sunfounder/files sudo chmod 755 /home/ftp_sunfounder/files

3. 重启FTP服务: /etc/init.d/vsftpd restart

测试远程连接

从另一台计算机,例如Windows 11上的文件浏览器

被动模式配置(关键必配)

这是许多教程跳过的部分,也是FTP经常失败的原因。

FTP使用两个通道:

1.控制端口(21端口)

2.数据传输端口(随机高端口)

未配置被动端口会出现以下问题:

连接成功,但无法列出文件

转移过程中冻结

在本地工作,但在路由器后出现故障

开启被动模式

添加以下内容到 /etc/vsftpd.conf:

pasv_enable=YESpasv_min_port=40000pasv_max_port=40100

这定义了固定范围的被动端口(40000–40100)。

如果您的Raspberry Pi位于路由器后面,并且可以从外部访问,还需要添加:

pasv_address=YOUR_PUBLIC_IP

替代你的公网IP或域名

为什么被动端口重要?

不定义固定的被动端口范围:

服务器随机选择高端口

路由器和防火墙会阻止这些端口

数据通道出现故障

客户端显示超时或目录列表错误

通过定义固定的范围,您可以只打开防火墙和路由器中的那些特定端口。

防火墙配置(UFW)

如果您使用UFW(推荐),允许FTP控制和被动端口。

如果未激活,则启用UFW:sudo ufw enable Allow FTP控制端口:

sudo ufw allow 21/tcp

允许被动端口范围:

sudo ufw allow 40000:40100/tcp

检查状态:

sudo ufw status

如果不打开被动端口,FTP将部分工作,但在传输过程中会失败。

 

路由器端口转发(如果需要远程访问)

如果从互联网访问FTP服务器:

在路由器上转发这些端口:

TCP 21 →树莓派 IP

TCP 40000–40100→树莓派 IP

重要提示:没有TLS加密的FTP是不安全的。

 

选项-使能FTPS(加密FTP)

添加加密(FTPS),生成自签名证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem

然后添加到vsftpd.conf:

ssl_enable=YESrsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.keyforce_local_data_ssl=YESforce_local_logins_ssl=YES

重启服务

重启服务后即可实现 FTP 加密传输,但整体配置复杂度仍高于 SFTP:FTPS协议概览

https://en.wikipedia.org/wiki/FTPS

重要安全警告

经典FTP:

以纯文本形式发送密码

在公共网络上不安全

没有TLS不应暴露于互联网

即使启用了FTPS,SFTP仍然更简单、更干净、更安全,因为:

它使用单个端口(22)

避免了被动模式的复杂性

默认情况下,它对所有内容进行加密。它直接与SSH集成

 

常见 FTP 故障排查

连接成功但无法查看文件列表:

被动端口被防火墙/路由器拦截,放行40000–40100端口即可解决

连接被拒绝:

vsftpd 服务未启动或21端口被拦截,执行 sudo systemctl status vsftpd 排查服务状态

文件传输超时:

数据被动端口未放行,检查防火墙与路由器端口配置

 

总结

树莓派文件服务器的搭建,不仅是简单的文件传输配置,更是将低成本微型设备改造为轻量化、永久在线的基础设施工具。传统 FTP 仅适用于老旧设备、封闭内网等特殊场景,日常使用、外网访问、自动化运维场景均推荐 SFTP 协议,依托其原生加密、配置简单、网络适配性强的优势,搭配 rsync 同步、定时任务、目录分类管理,可完美替代重型 NAS 设备,低成本实现文件备份、物联网数据归集、多平台文件共享等实用功能,充分发挥树莓派轻量化、高灵活度的运维优势。

零成本自建邮箱!手把手教你用树莓派打造 24h 在线私人邮件服务器!

Tip:对于刚接触树莓派的新手来说,面对英文文档、零散教程和复杂配置,很容易无从下手。pidoc.cn(https://pidoc.cn/)就是为解决这些痛点而生的树莓派中文一站式学习平台,界面清晰、内容系统、更新及时,堪称新手入门的“保姆级” 网站,让零基础用户也能轻松上手树莓派。

 

官方网站:https://edatec.cn/zh/cm0

淘宝店铺:https://edatec.taobao.com/

相关推荐