树莓派FTP转SFTP全攻略:安全传输与自动化备份避坑指南

树莓派凭借其低成本和低功耗,能将一台小型开发板转变为处理实际任务的可靠工具。其中,把树莓派变成文件服务器是非常实用的应用之一。通过 FTP 或 SFTP,你可以轻松在计算机间传输文件、自动执行备份,或在局域网甚至远程环境中共享数据。
本文将深入解释树莓派环境下的 FTP 是什么,对比主流文件传输协议,并重点推荐 SFTP 搭建方案以及 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 通过 SSH 进行安全且高效的单次同步测试:
rsync -avz ~/Documents/ ftp_sunfounder@raspberrypi:/pc_backup/
要实现每夜自动备份,编辑 crontab:
crontab -e
添加:
0 2 * * * rsync -avz ~/Documents/ ftp_sunfounder@raspberrypi:/pc_backup/
这样,树莓派每天凌晨 2 点会自动接收电脑文档备份。
步骤四: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/bash
find /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 |
| 维护简单 | 需要 Web 后台和服务配置 |
| 无需数据库 | 资源占用高 |
| 部署快速 | 部署流程繁琐 |
| 适合自动化运维 | 偏向交互式文件存储 |
对于开发者、家庭实验室和物联网场景而言,树莓派 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,需提前启用。运行:
sudo raspi-config
进入“接口选项”,开启 SSH。

协议选型指南
使用 SFTP 的场景
- 需要安全加密传输文件
- 通过公网远程访问设备
- 配合脚本实现自动化传输
- 生产环境及专业运维场景
使用 FTP 的场景
- 老旧遗留系统
- 封闭且可信的内网环境
- 不支持 SFTP 的设备
搭建 SFTP 服务(推荐)
选项 A:利用 OpenSSH 实现 SFTP
为什么 SFTP 已经可用
树莓派系统默认预装 OpenSSH 服务,一旦开启 SSH,SFTP 便自动启用,无需安装任何额外软件,零成本即可实现安全文件传输。
无需额外软件
开启 SSH 后,SFTP 自动运行。
检查树莓派上的 SFTP
- 检查 SSH 服务状态:
sudo systemctl status ssh

- 创建专用用户
主要原因有两点:
- 安全:即使有人获取了 SFTP 凭证,也只能访问特定的用户账户,而非整个系统。这限制了潜在损害并保护了重要的系统文件。
- 受控的文件访问:将用户分配到一个专用目录(Chroot 监狱),可将其限制在一个文件夹内,防止浏览完整的 Linux 文件系统。
为文件传输创建专用用户:
sudo adduser ftp_sunfounder
- 配置权限
创建一个用于文件访问的文件夹:
sudo mkdir /home/sftp_sunfounder/files
sudo chown ftp_sunfounder:ftp_sunfounder /home/sftp_sunfounder/files
sudo chmod 755 /home/sftp_sunfounder/files

- 本地连接测试
在树莓派本地测试:
sftp ftp_sunfounder@localhost

- 远程连接测试
从另一台电脑通过 WinSCP 连接(下载地址:https://winscp.net/eng/docs/lang:chs)。


搭建 FTP 服务(备选方案)
选项 B:使用 vsftpd 搭建 FTP
什么时候适用 FTP
FTP 仍适用于老旧设备和特殊的兼容场景。
安装与配置 vsftpd
- 安装 vsftpd:
sudo apt install vsftpd
- 基础参数配置:
sudo nano /etc/vsftpd.conf

建议配置内容:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
allow_writeable_chroot=YES
参数释义:
anonymous_enable=NO:关闭匿名登录local_enable=YES:允许系统用户登录write_enable=YES:开启文件读写权限chroot_local_user=YES:将用户锁定至其专属目录allow_writeable_chroot=YES:允许对根目录的写操作
创建 FTP 专属用户与权限
- 创建用户:
sudo adduser ftp_sunfounder
默认情况下,当 chroot_local_user=YES 时,用户将被限制在 /home/ftp_sunfounder/files。
- 配置权限:
sudo chown ftp_sunfounder:ftp_sunfounder /home/ftp_sunfounder/files
sudo chmod 755 /home/ftp_sunfounder/files
- 重启 FTP 服务:
sudo /etc/init.d/vsftpd restart
测试远程连接
从另一台计算机,例如在 Windows 11 上使用文件资源管理器测试连接。

被动模式配置(关键必配)
许多教程会跳过这一部分,而这正是 FTP 经常失败的原因。
FTP 使用两个通道:
- 控制端口(21 端口)
- 数据传输端口(随机高端口)
未配置被动端口会出现以下问题:
- 连接成功,但无法列出文件
- 传输过程中冻结
- 本地正常,但在路由器后出现故障
开启被动模式
在 /etc/vsftpd.conf 中添加:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
这将定义一个固定的被动端口范围(40000–40100)。
如果你的树莓派位于路由器后方且需要从外部访问,还需添加:
pasv_address=YOUR_PUBLIC_IP
替换为你的公网 IP 或域名。
为什么被动端口至关重要
不定义固定的被动端口范围时:
- 服务器会随机选择高端口
- 路由器和防火墙会拦截这些随机端口
- 数据通道因而故障
- 客户端显示超时或目录列表错误
通过定义固定范围,你只需在防火墙和路由器中开放这些特定端口。
防火墙配置(UFW)
如果使用 UFW(推荐),允许 FTP 控制和被动端口。
若未激活 UFW,先启用:sudo ufw enable
允许 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=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
force_local_data_ssl=YES
force_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 设备,低成本实现文件备份、物联网数据归集和多平台文件共享等功能,充分发挥树莓派轻量、高灵活度的运维优势。