在ARM架构设备上搭建FTP服务器,常见于树莓派、香橙派等嵌入式开发板,可用于文件共享、数据备份等场景,本文以树莓派(Raspberry Pi OS Lite 64位系统)为例,详细讲解使用vsftpd(Very Secure FTP Daemon)搭建FTP服务器的全过程,涵盖环境准备、软件安装、配置优化、安全设置及常见问题排查。

准备工作
在开始搭建前,需确保硬件和软件环境满足基本需求,以下是推荐配置及清单:
硬件与系统环境
- 硬件:树莓派4B/5B(或其他ARM开发板,如香橙派Rock5B)、MicroSD卡(≥16GB)、电源适配器(5V/3A以上)、网线或Wi-Fi连接。
- 系统:Raspberry Pi OS Lite(64位,无桌面环境,节省资源),基于Debian 12,支持ARM64架构。
- 网络:设备与客户端(电脑/手机)处于同一局域网,或已配置端口转发(如需公网访问)。
软件依赖
需通过包管理器安装vsftpd及辅助工具(如防火墙配置工具),树莓派OS默认使用apt,确保系统已更新:
sudo apt update && sudo apt upgrade -y
安装vsftpd
vsftpd是轻量级、安全的FTP服务器软件,适合ARM设备资源受限的特点。
安装vsftpd
执行以下命令安装:sudo apt install vsftpd -y
安装完成后,服务会自动启动,可通过
systemctl status vsftpd检查状态。设置开机自启
确保服务随系统启动:sudo systemctl enable vsftpd
配置vsftpd
vsftpd的核心配置文件为/etc/vsftpd.conf,需根据需求调整参数。
备份原始配置
修改前先备份原始文件:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
编辑配置文件
使用nano或vim打开配置文件:

sudo nano /etc/vsftpd.conf
以下是关键参数及修改建议(注释行以开头,需取消注释或修改):
| 参数 | 默认值 | 推荐值 | 说明 |
|---|---|---|---|
anonymous_enable | YES | NO | 是否允许匿名登录,建议关闭(安全) |
local_enable | NO | YES | 是否允许本地用户登录 |
write_enable | NO | YES | 是否允许用户上传/修改文件 |
chroot_local_user | NO | YES | 是否限制用户仅能访问自家目录(安全) |
allow_writeable_chroot | YES | NO | 结合chroot_local_user,禁止用户写入根目录(防提权) |
pasv_enable | NO | YES | 启用被动模式(解决客户端因防火墙无法连接问题) |
pasv_min_port | 0 | 10000 | 被动模式最小端口(需防火墙开放) |
pasv_max_port | 0 | 10100 | 被动模式最大端口 |
local_umask | 022 | 022 | 用户上传文件的默认权限(644/755) |
user_sub_token | (空) | %d | 动态目录路径变量(如local_root=/home/%d) |
添加自定义配置(可选)
若需限制特定用户或目录,可在文件末尾添加:
# 仅允许用户ftpuser访问,禁用其他用户 userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO # 设置FTP根目录为/home/ftpuser local_root=/home/%d
创建用户并设置权限
假设创建名为ftpuser的用户,密码为YourPassword123:
sudo useradd -m -s /bin/bash ftpuser # 创建用户并指定shell sudo passwd ftpuser # 设置密码 sudo chmod 755 /home/ftpuser # 确保目录可访问(chroot需要执行权限)
重启服务使配置生效
sudo systemctl restart vsftpd
安全设置
配置防火墙(UFW)
树莓派OS默认使用ufw防火墙,需开放FTP相关端口:
- 主动模式:端口21(控制连接)
- 被动模式:端口10000-10100(数据连接,需与
vsftpd.conf中pasv_min_port/pasv_max_port一致)
执行以下命令:
sudo ufw allow 21/tcp # 允许FTP控制端口 sudo ufw allow 10000:10100/tcp # 允许被动模式数据端口 sudo ufw enable # 启用防火墙(若未启用)
禁用匿名登录(已配置)
确保anonymous_enable=NO,避免恶意用户通过匿名账号访问。
启用SSL/TLS加密(可选)
为提升安全性,可配置FTP over SSL/TLS(需证书):
- 生成自签名证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 修改
vsftpd.conf,添加以下参数:ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES rsa_cert_file=/etc/ssl/private/vsftpd.pem
- 重启服务:
sudo systemctl restart vsftpd
测试与问题排查
本地测试
使用ftp命令行工具测试(需安装ftp客户端:sudo apt install ftp -y):
ftp 127.0.0.1
输入用户名ftpuser和密码,若能登录并执行ls、put等命令,则服务正常。

常见问题
问题1:连接超时(530 Login incorrect)
原因:防火墙未开放被动端口、用户密码错误或chroot目录权限问题。
解决:检查pasv端口是否开放,确认/home/ftpuser权限为755,查看/var/log/vsftpd.log日志定位错误。问题2:用户无法上传文件(553 Could not create file)
原因:write_enable=NO或目录权限不足。
解决:确保vsftpd.conf中write_enable=YES,且用户对目录有写权限(chmod 755目录,chmod 644文件)。
相关问答FAQs
Q1:如何限制FTP用户只能访问指定的子目录(如/home/ftpuser/share)?
A:可通过修改local_root参数并结合user_sub_token实现,在vsftpd.conf中添加:
local_root=/home/%d/share # %d会被替换为用户名,即指向/home/ftpuser/share
同时确保/home/ftpuser/share目录存在且权限正确(sudo mkdir -p /home/ftpuser/share && sudo chmod 755 /home/ftpuser/share),重启服务后,用户登录即被限制在该子目录内。
Q2:为什么FTP客户端连接时提示“425 Security: Bad IP connecting”?
A:通常是因为被动模式(PASV)的IP配置错误,若服务器有多个IP或通过NAT访问,需在vsftpd.conf中指定服务器公网IP:
pasv_address=192.168.1.100 # 替换为服务器实际公网IP
若为内网环境,可填写局域网IP;若为公网服务器,需填写路由器映射后的公网IP,重启服务后即可解决。
通过以上步骤,即可在ARM设备上成功搭建安全、稳定的FTP服务器,根据实际需求调整配置参数,可进一步优化性能和安全性。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复