在阿里云ECS(Elastic Compute Service)实例中设置FTP服务,需要完成实例安全组配置、FTP服务器安装与配置、用户权限管理以及防火墙设置等步骤,以下是详细的操作指南,帮助您顺利完成FTP服务的搭建。

(图片来源网络,侵删)
准备工作
在开始设置FTP之前,确保您已完成以下准备工作:
- 创建并启动ECS实例:登录阿里云控制台,创建一台Linux或Windows系统的ECS实例,并确保实例已启动,本文以CentOS 7系统为例进行说明。
- 连接ECS实例:通过SSH工具(如PuTTY、Xshell)连接到ECS实例,或使用Windows系统的远程桌面连接(如果是Windows实例)。
- 安全组配置:在ECS控制台的“网络与安全”>“安全组”中,添加安全组规则,放行FTP服务的默认端口(21端口)以及被动模式可能使用的端口范围(如20000-21000),具体配置如下:
- 方向:入方向
- 授权对象:0.0.0.0/0(表示允许所有IP访问,生产环境建议限制为特定IP)
- 端口范围:21/21(FTP控制端口)
- 端口范围:20000-21000/20000-21000(FTP被动模式数据端口)
安装FTP服务器软件
以CentOS 7为例,安装vsftpd(Very Secure FTP Daemon):
- 更新系统软件包:
sudo yum update -y
- 安装vsftpd:
sudo yum install vsftpd -y
- 启动并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
配置FTP服务器
- 备份原始配置文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
- 编辑配置文件:
sudo vim /etc/vsftpd/vsftpd.conf
修改以下关键参数:
anonymous_enable=NO
:禁止匿名访问local_enable=YES
:允许本地用户访问write_enable=YES
:允许用户上传文件chroot_local_user=YES
:限制用户仅能访问其主目录pasv_min_port=20000
:设置被动模式最小端口pasv_max_port=21000
:设置被动模式最大端口allow_writeable_chroot=YES
:允许被限制在主目录的用户具有写权限(需配合以下配置) 在文件末尾添加以下内容以支持被动模式:pasv_address=<ECS实例公网IP> # 替换为您的ECS公网IP pasv_addr_resolve=YES
- 保存并退出(
wq
)。
创建FTP用户并设置权限
- 创建FTP用户:
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
-m
:自动创建用户主目录-d
:指定用户主目录-s
:禁止用户登录SSH(仅允许FTP)
- 设置用户密码:
sudo passwd ftpuser
- 设置目录权限:
sudo chmod 755 /home/ftpuser sudo chown ftpuser:ftpuser /home/ftpuser
配置防火墙与SELinux
- 开放FTP相关端口:
sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=20000-21000/tcp sudo firewall-cmd --reload
- 关闭SELinux或设置FTP相关策略(推荐关闭):
sudo setenforce 0 # 临时关闭 sudo vim /etc/selinux/config # 永久关闭,将SELINUX=disabled
重启FTP服务并测试
- 重启vsftpd服务:
sudo systemctl restart vsftpd
- 测试连接:
- 使用FTP客户端(如FileZilla)连接,输入ECS公网IP、用户名(ftpuser)和密码。
- 确保可以上传、下载文件,且用户被限制在主目录中。
常见问题排查
- 连接被拒绝:检查安全组规则是否放行21和被动端口,防火墙是否已关闭或开放端口。
- 无法上传文件:检查
write_enable=YES
是否配置,用户目录权限是否为755,所有者是否为ftpuser。 - 被动模式连接失败:确认
pasv_address
是否为ECS公网IP,安全组是否放行被动端口范围。
相关问答FAQs
问题1:如何限制FTP用户只能访问指定目录?
答:通过chroot_local_user=YES
限制用户访问主目录,并确保用户主目录权限为755,所有者为FTP用户,若希望用户访问/data/ftp
目录,可执行:

(图片来源网络,侵删)
sudo useradd -m -d /data/ftp -s /sbin/nologin ftpuser sudo chown ftpuser:ftpuser /data/ftp
问题2:如何设置FTP用户仅可下载不可上传?
答:在vsftpd.conf
中配置write_enable=NO
,或针对特定用户使用user_config_dir
功能。
- 创建用户配置目录:
sudo mkdir /etc/vsftpd/user_conf
- 为用户
ftpuser
创建配置文件/etc/vsftpd/user_conf/ftpuser
,添加:write_enable=NO
- 在
vsftpd.conf
中添加:user_config_dir=/etc/vsftpd/user_conf
- 重启vsftpd服务即可生效。

(图片来源网络,侵删)