Linux服务安装ftp服务(支持ftps)详细教程

简介: 本文详解vsftpd FTP服务器的快速部署:涵盖Debian/Ubuntu与CentOS/RHEL系统安装、专用用户与目录创建、核心安全配置(禁用匿名访问、chroot限制)、FTPS加密配置(TLS 1.2/1.3支持、自签名证书生成)及隐式SSL(端口990)设置,并提供服务管理与本地测试命令。

1. 安装方式

Vsftpd可通过系统包管理器安装:

  • Debian/Ubuntu系统sudo apt-get install vsftpd
  • CentOS/RHEL系统sudo yum -y install vsftpd

2. 基础准备:创建用户与目录

为使用FTP服务,需要创建专用的系统用户和主目录:

# 创建用户组
sudo groupadd ftp
# 创建并授权主目录
sudo mkdir -p /home/resource
sudo chmod 777 /home/resource
# 创建用户(ftpuser)并指定主目录和组
sudo useradd -g ftp -d /home/resource ftpuser
# 设置用户密码
sudo passwd ftpuser

3. 核心配置详解

配置文件位于 /etc/vsftpd.conf。以下是根据原文整理的常用配置项:

3.1 基础与安全配置

配置项 示例值 说明
监听设置 listen=NO, listen_ipv6=YES 根据网络环境配置IPv6监听
匿名访问 anonymous_enable=NO 禁止匿名登录,增强安全性
本地用户 local_enable=YES 允许系统用户(如ftpuser)登录
写入权限 write_enable=YES 允许上传、创建文件等操作
目录消息 dirmessage_enable=YES 进入目录时显示消息文件
时间设置 use_localtime=YES 使用服务器本地时间
日志记录 xferlog_enable=YES 启用上传下载日志
端口连接 connect_from_port_20=YES 启用20端口进行数据传输
用户根目录限制 chroot_local_user=YES 限制用户活动范围在其主目录
允许可写根目录 allow_writeable_chroot=YES 允许主目录可写(配合上一项使用)

3.2 配置FTPS(隐式SSL/TLS加密)

为了数据传输安全,可以配置FTPS。首先使用OpenSSL生成自签名证书(放置于安全目录如/etc/vsftpd/ssl/):
bash

sudo mkdir -p /etc/vsftpd/ssl
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
  -keyout /etc/vsftpd/ssl/vsftpd.pem \
  -out /etc/vsftpd/ssl/vsftpd.pem

然后在配置文件中添加或修改以下关键项:

配置项 推荐值 说明
ssl_enable YES 开启SSL加密功能
rsa_cert_file /etc/vsftpd/ssl/vsftpd.pem 指定证书文件路径
rsa_private_key_file /etc/vsftpd/ssl/vsftpd.pem 指定私钥文件路径
ssl_tlsv1_2 YES 启用TLS 1.2(推荐,更安全)
ssl_tlsv1_3 YES 启用TLS 1.3(如版本支持)
ssl_sslv2ssl_sslv3 NO 禁用不安全的SSL协议
require_ssl_reuse NO 设为NO以避免下载问题
ssl_ciphers HIGH 使用高强度的加密算法

3.3 高级与隐式SSL配置

如果希望使用隐式SSL(即专用的FTPS端口990),可以添加:
text

implicit_ssl=YES
listen_port=990

其他性能与调试配置:

  • max_clients=11: 最大并发连接数
  • max_per_ip=11: 每个IP的最大连接数
  • log_ftp_protocol=NO: 是否记录详细的FTP协议命令

4. 服务管理命令

bash

# 启动服务
sudo systemctl start vsftpd   # 或 service vsftpd start
# 查看状态
sudo systemctl status vsftpd  # 或 service vsftpd status
# 重启服务
sudo systemctl restart vsftpd # 或 service vsftpd restart
# 停止服务
sudo systemctl stop vsftpd    # 或 service vsftpd stop

5. 本地连接测试

bash

# 连接本地FTP服务器
ftp 127.0.0.1
# 按提示输入用户名(如ftpuser)和密码
# 登录成功后可使用 ls, get, put 等命令
ftp> quit # 退出
相关实践学习
流水线运行出错排查难?AI帮您智能排查
本实验将带您体验云效流水线Flow的智能排查能力,只需短短1-2分钟,即可体验AI智能排查建议。
ALPD云架构师系列 - 云原生DevOps36计
如何把握和运用云原生技术,撬动新技术红利,实现持续、安全、高效和高质量的应用交付,并提升业务的连续性和稳定性,这是云原生时代持续交付共同面对的机会和挑战。本课程由阿里云开发者学堂和阿里云云效共同出品,是ALPD方法学云架构师系列的核心课程之一,适合架构师、企业工程效能负责人、对DevOps感兴趣的研发、测试、运维。 课程目标 前沿技术:了解云原生下DevOps的正确姿势,享受云原生带来的技术红利 系统知识:全局视角看软件研发生命周期,系统学习DevOps实践技能 课程大纲: 云原生开发和交付:云研发时代软件交付的挑战与云原生工程实践 云原生开发、运行基础设施:无差别的开发、运行环境 自动部署:构建可靠高效的应用发布体系 持续交付:建立团队协同交付的流程和流水线 质量守护:构建和维护测试和质量守护体系 安全保障:打造可信交付的安全保障体系 建立持续反馈和持续改进闭环
相关文章
|
4月前
|
监控 Ubuntu Linux
Linux网络FTP故障排除(手把手教你解决常见FTP连接问题)
教程来源https://www.vps5.cn/本教程详解Linux下FTP服务器常见问题的排查与解决方法,涵盖服务启动、防火墙配置、vsftpd设置、被动模式端口调整及日志分析,帮助用户快速定位并解决连接失败、登录错误等问题,适合初学者系统掌握Linux FTP故障排除技巧。
|
3月前
|
运维 监控 Linux
Linux中收集【系统】和【硬件】信息的30个常用命令总结
本文系统梳理30个Linux运维核心命令,涵盖系统信息(如`uname`、`hostname`)、硬件诊断(如`lscpu`、`smartctl`)及日志监控(如`dmesg`、`journalctl`)等全场景需求,助力高效排查故障、优化性能与实现自动化运维。
775 2
|
3月前
|
搜索推荐 关系型数据库 大数据
PL/pgSQL 入门教程(四):使用游标(cursor)
游标是PostgreSQL中“按需取数”的数据指针,避免大查询内存溢出;支持逐行处理、动态查询、精准更新/删除及函数返回大结果集。分未绑定(灵活)与绑定(固定)两类,核心操作为声明→打开→FETCH/MOVE/UPDATE→关闭,FOR循环可自动简化遍历。
|
存储 算法 Linux
【Linux网络服务】Centos7搭建FTP服务器
【Linux网络服务】Centos7搭建FTP服务器
|
3月前
|
运维 网络协议 Linux
Linux firewalld防火墙使用详解
firewalld是Linux动态防火墙管理工具,替代iptables,支持运行时与永久配置分离、区域隔离、富规则等特性。本教程详解firewall-cmd命令,涵盖核心概念、实战配置及高级功能,助力运维人员快速掌握防火墙管理技能。
|
8月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
22970 31
|
网络协议 Linux
搭建FTP报错:Job for vsftpd.service failed because the control process exited with error code. See
搭建FTP报错:Job for vsftpd.service failed because the control process exited with error code. See
1204 3
|
SQL Java 数据库连接
成功解决:was not registered for synchronization because synchronization is not active
这篇文章是关于解决Mybatis在同步过程中出现"was not registered for synchronization because synchronization is not active"错误的技术博客。
成功解决:was not registered for synchronization because synchronization is not active