在树莓派上安装和配置 vsftpd(Very Secure FTP Daemon)服务器的步骤如下:

1. 安装 vsftpd

打开终端,执行以下命令安装 vsftpd:

sudo apt update
sudo apt install vsftpd

安装完成后,vsftpd 会自动启动。可以通过以下命令验证服务状态:

sudo systemctl status vsftpd

2. 备份原始配置文件

在修改配置前,先备份原始配置文件:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup

3. 配置 vsftpd

使用文本编辑器(如 nano 或 vim)打开配置文件:

sudo nano /etc/vsftpd.conf

在文件中进行以下修改:

基础配置
# 禁止匿名访问
anonymous_enable=NO# 允许本地用户登录
local_enable=YES# 启用写入权限
write_enable=YES# 本地用户上传文件的默认权限
local_umask=022# 启用被动模式(推荐)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
用户隔离配置
# 限制用户只能访问自己的主目录
chroot_local_user=YES# 允许指定用户例外(可选)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
其他安全设置
# 启用 SSL/TLS 加密(可选)
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

修改完成后,按 Ctrl+O 保存,按 Ctrl+X 退出。

4. 创建允许访问的用户列表(可选)

如果启用了 chroot_list_enable=YES,需要创建 /etc/vsftpd.chroot_list 文件并添加允许访问的用户:

sudo nano /etc/vsftpd.chroot_list

在文件中每行添加一个用户名(例如 pi),保存后退出。

5. 创建 FTP 用户和目录

创建一个专门的 FTP 用户(例如 ftpuser)并设置密码:

sudo adduser ftpuser

按提示设置密码和用户信息。

创建用户的 FTP 目录并设置权限:

sudo mkdir -p /home/ftpuser/ftp/files
sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp
sudo chmod -R 755 /home/ftpuser/ftp

6. 配置防火墙(可选)

如果树莓派启用了防火墙(如 ufw),需要开放 FTP 端口:

sudo ufw allow 20/tcp  # FTP 数据端口
sudo ufw allow 21/tcp  # FTP 控制端口
sudo ufw allow 40000:40100/tcp  # 被动模式端口范围

7. 重启 vsftpd 服务

配置完成后,重启 vsftpd 服务使更改生效:

sudo systemctl restart vsftpd

8. 测试 FTP 连接

使用 FTP 客户端(如 FileZilla、WinSCP 或命令行工具)连接到树莓派的 IP 地址,使用之前创建的用户名(如 ftpuser)和密码登录。Windows cmd命令窗口:>ftp 192.168.1.177(你的服务器地址),按提示输入相应用户名、密码

  • 主机:树莓派的 IP 地址(如 192.168.1.100
  • 端口:21
  • 用户名ftpuser
  • 密码:用户密码

常见问题

  1. 无法连接:检查防火墙设置和 vsftpd 服务状态。
  2. 权限问题:确保文件目录权限正确(chmodchown)。
  3. SSL 证书错误:可生成自签名证书或使用 Let’s Encrypt 证书。

通过以上步骤,你可以在树莓派上成功配置一个安全的 FTP 服务器,限制用户访问特定目录,并支持文件上传和下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90425.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90425.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/90425.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.服务注册发现:微服务的神经系统

在微服务架构中,服务之间不再是固定连接,而是高度动态、短暂存在的。如何让每个服务准确找到彼此,是分布式系统治理的核心问题之一。服务注册发现机制,正如神经系统之于人体,承担着连接、协调、感知变化的关键角色。 本文将围绕 Netflix 开源的服务注册发现组件 Eureka 展…

基于Docker Compose部署Traccar容器与主机MySQL的完整指南

Traccar Docker镜像内嵌了H2数据库,该数据库容量有限,当达到一定容量时,定位数据无法写入会导致无法定位显示。为此有必要为Traccar 配置外部数据库。根据官网文档和自身经验我选择了MySQL。 参考的官方文档 软件环境为ubuntu server 24.04版…

paddlehub环境搭建和测试

目录1.环境搭建1.1 创建conda环境1.2 安装paddlepaddle和paddlehub1.3 安装依赖2. 移动端模型部署2.1 安装移动端模型2.2 测试3. 服务部署3.1 启动PaddleHub Serving3.2 发送预测请求1.环境搭建 1.1 创建conda环境 conda create --name paddlehub python3.8 conda activate p…

408第三季part2 - 计算机网络 - ip地址II

理解路由聚合就是从第一个不一样的往后全置为0题目这里一般来说会到达2个目的地址,但中间有个路由,所以路由聚合一下就行了聚合出来这个然后下一跳就是跳到下一个路由器d前面一样的不动,不一样的开始全置为0c再次理解题目这个先匹配169.96.40…

【Unity】MiniGame编辑器小游戏(十一)消消乐【Crush】

更新日期:2025年7月9日。 项目源码:获取项目源码 索引 消消乐【Crush】一、游戏最终效果二、玩法简介三、正式开始1.定义游戏窗口类2.规划游戏窗口、视口区域3.方块 Block①.定义方块类②.生成方块所有类型③.生成消消乐棋盘④.绘制收集栏⑤.绘制方块阵列4.查看方块挡住的其他…

RK3588 Android SDK 实战全解析 —— 架构、原理与开发关键点

📖 推荐阅读:《Yocto项目实战教程:高效定制嵌入式Linux系统》 🎥 更多学习视频请关注 B 站:嵌入式Jerry RK3588 Android SDK 实战全解析 —— 架构、原理与开发关键点 作者:嵌入式 Jerry 一、前言 随着 AIoT、工业智…

从救火到赋能:运维的职责演进与云原生时代的未来图景

引言:刻板印象的瓦解 提起"运维工程师",许多人脑海中可能仍会浮现这样的画面:深夜里守着闪烁的监控屏幕、手忙脚乱地重启服务器、在布满网线的机房里穿梭…这曾是运维工作的真实片段,但绝非全貌,更非未来。 在云计算、DevOps、SRE理念和云原生技术栈的冲击下,…

UDP的socket编程

socket接口int socket(int domain, int type, int protocol);参数说明​​参数说明domain协议族(地址族),如 AF_INET(IPv4)、AF_INET6(IPv6)type套接字类型,UDP 使用 SOCK_DGRAM&…

基于SD-WAN的管件制造数字化产线系统集成方案

1. 背景与目标随着制造业向智能化、数字化方向转型,传统产线面临着数据割裂、协同效率低下等问题。管件制造作为典型场景,涉及多环节的设计、制造与质检流程,亟需一套高效的系统集成方案,保障全流程数据贯通与实时协同。本方案基于…

学习open62541 --- [79] 在docker中运行open62541工程

docker是非常流行的容器技术,解决了部署环境不一致的问题,open62541的工程也可以在docker容器中运行,本文讲述如何把open62541工程放到docker容器中运行。 本文使用WSL ubuntu 22.04作为宿主环境,其它linux也是一样。一 拉取debia…

Spring Boot微服务中集成gRPC实践经验分享

Spring Boot微服务中集成gRPC实践经验分享 一、业务场景描述 在某电商系统中,推荐服务、库存服务、订单服务等微服务需要高效、双向流式通信,RESTHTTP已无法满足低延迟、高并发和严格类型安全的需求。为此,我们选择在Spring Boot微服务中集成…

springboot项目编写测试类,乱码问题解决

​MockMvc 的默认行为​ MockMvc ​默认使用 ISO-8859-1 解码响应,而服务端实际返回 UTF-8 编码数据 。 Postman 无乱码是因浏览器自动识别编码,但 MockMvc 需显式配置。 ​过滤器失效场景​ Spring 的 CharacterEncodingFilter ​默认只对 POST 请求生效…

打破传统,开启 AR 智慧课堂​

在教育领域,AR 智慧课堂宛如一场及时雨,为传统教育模式带来了革命性的变革,让学习变得更加生动有趣、高效互动。通过 AR 技术,抽象的知识瞬间变得鲜活起来,学生们可以在虚拟与现实交织的世界中,探索历史的长…

热烈祝贺 Flink 2.0 存算分离入选 VLDB 2025

VLDB 2025 论文热烈祝贺 Apache Flink 2.0 的重磅研究成果《Disaggregated State Management in Apache Flink 2.0 》被数据库领域顶级会议 VLDB 2025 正式接收!这项工作由 Apache Flink 社区 联合 阿里巴巴实时计算 Flink 团队 以及多位学术界研究人员共同完成&…

蓄电池能量管理matlab的simulink仿真

蓄电池能量管理matlab的simulink仿真模型 AlternatorTableData.mat , 7395 Battery_Management_Lib.mdl , 577258 Readme.txt , 1293 license.txt , 1551 ssc_battery_management.mdl , 221248 ssc_lead_acid_battery_50Ah_ini.m , 1760 ssc_lead_acid_battery_80Ah_ini.m , 1…

MyBatisPlus-03-扩展功能

文章目录【README】【1】基于MyBatisPlus的代码生成器【2】MyBatisPlus-DB静态工具【2.1】使用MyBatisPlus的DB静态工具查询单个及多个用户地址【查询单个用户的访问效果】【查询多个用户的访问效果】【3】逻辑删除【3.1】代码实现【4】枚举处理器【4.1】代码实现【5】JSON处理…

初识Neo4j之Cypher(三)

目录 一、介绍 二、语法 1、节点 2、关系 3、属性 4、模式 一、介绍 Cypher 是 Neo4j 的声明式查询语言,兼容 GQL 标准。通过 openCypher 项目,Cypher 以开源方式提供。它类似于 SQL,但专为图数据优化。 Cypher 直观且接近自然语言&…

19-C#静态方法与静态类

C#静态方法与静态类 1.static-静态方法animal.eat();//直接调用 public class animal {public static void eat()//定义静态方法{messagebox.show("animal eat");} }2.static-静态类animal.eat();//直接调用public stat…

基于YOLO的足球检测Web应用:从训练到部署的完整实战

用Python和深度学习技术打造一个完整的足球检测系统,支持图片检测、视频分析和实时监控。本文带你从零开始构建一个专业的Web应用。🎯 项目背景 在体育赛事分析和足球训练中,准确识别和定位足球是一个重要需求。本项目利用YOLO深度学习算法&a…

npm 切换 node 版本 和npm的源

在开发过程中,不同项目可能需要不同版本的 Node.js,同时 于由XX原因,我们需要切换npm的源。这时如果需要切换node版本或者npm的源,我们可以使用以下方法。 使用 nvm 切换 Node 版本 1、安装 npm install nvm -g2、使用 # 列出所有…