阿里云服务器怎么用FTP服务器配置?

阿里云安全组策略

配置FTP最常见的坑是阿里云安全组(相当于云防火墙)没有放行对应的端口,FTP默认使用21端口(控制端口)被动模式下的数据端口,你需要在阿里云控制台的ECS实例安全组规则里放行这些端口。

步骤概览

1、安装 vsftpd 服务

2、配置 vsftpd(重点:设置为被动模式并指定端口范围)

3、创建 FTP 用户(出于安全考虑,不建议直接使用 root)

4、配置防火墙(firewalld 或 iptables)

5、配置阿里云安全组

6、测试连接

详细操作步骤

前提

- 你已经拥有一台阿里云 ECS(云服务器),并已通过 SSH 连接上。

- 操作系统:CentOS 7/8(其他发行版命令略有差异,但配置文件思路相同)。

- 你有sudoroot 权限。

步骤1:安装 vsftpd

更新 yum 源
sudo yum update -y
安装 vsftpd
sudo yum install -y vsftpd
启动 vsftpd 服务并设置为开机自启
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
检查服务状态
sudo systemctl status vsftpd

步骤2:配置 vsftpd(关键步骤)

我们需要修改配置文件/etc/vsftpd/vsftpd.conf强烈建议先备份

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
本地用户新建文件的 umask 值
local_umask=022
使用 UTF-8 编码支持中文文件名
utf8_filesystem=YES
---------- 被动模式关键配置 ----------
开启被动模式(默认可能已开启)
pasv_enable=YES
指定被动模式端口范围(阿里云安全组必须放行这个范围)
pasv_min_port=30000
pasv_max_port=31000
重要:设置为服务器公网 IP 或 0.0.0.0(如果是一台有公网 IP 的服务器)
如果你的服务器是经典网络,请填写你的公网 IP
如果是 vpc 网络(大多数情况),可以留空或填 0.0.0.0,客户端会自动适配
pasv_address=你的服务器公网IP

>注意pasv_address 如果不是空,则需要填写阿里云控制台看到的公网 IP,如果不想填,可以留空,但某些被动模式连接情况下客户端可能无法获取正确地址。

保存并退出(vim 中按Esc,输入:wq 回车)。

步骤3:创建 FTP 用户(推荐专用用户)

为了安全,不要直接用root,新建一个系统用户给 FTP 使用:

添加用户 ( ftpuser)
sudo useradd -m -s /sbin/nologin ftpuser
设置密码
sudo passwd ftpuser
输入密码并确认

-m:自动创建 home 目录 (/home/ftpuser)

-s /sbin/nologin:禁止该用户通过 SSH 登录,只能用于 FTP。

(可选)限制用户只能访问自己的目录(chroot)

修改配置文件vsftpd.conf,添加或确认以下行:

禁止用户访问 home 目录之外的目录
chroot_local_user=YES
允许对 chroot 目录进行写操作(vsftpd 2.3.5 后默认拒绝写入,需要添加)
allow_writeable_chroot=YES

步骤4:配置服务器内部防火墙(firewalld)

如果你的服务器开启了 firewalld(大多数 CentOS 7+ 默认),需要放行 FTP 相关端口。

放行 21 端口(控制端口)
sudo firewall-cmd --permanent --add-port=21/tcp
放行我们指定的被动模式端口范围
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
重新加载防火墙规则
sudo firewall-cmd --reload
检查规则是否生效
sudo firewall-cmd --list-all

如果使用的是iptables,命令类似但不同(此处不展开)。

步骤5:配置阿里云安全组(最关键的外部网络访问)

这一步在阿里云控制台操作,而不是在服务器上。

1、 登录阿里云控制台,进入ECS 实例列表

2、 找到你的服务器,点击实例名称 进入详情页。

3、 点击左侧安全组 标签(如果没有,需要在实例页面右侧找到“安全组”入口)。

4、 找到当前实例绑定的安全组,点击配置规则

5、 点击入方向 ->手动添加

授权策略:允许

协议类型:自定义 TCP

端口范围21/21

授权对象0.0.0.0/0(允许所有来源,或根据需要缩小范围)

描述:FTP 控制端口

6、 再次点击入方向 ->手动添加

授权策略:允许

协议类型:自定义 TCP

端口范围30000/31000

授权对象0.0.0.0/0

描述:FTP 被动数据端口

>注意:必须添加两个规则,很多用户只开放了21端口,导致连接后卡在“列目录”或“数据传输”阶段。

步骤6:重启 vsftpd 并测试

sudo systemctl restart vsftpd

测试方法:

使用命令行(Linux/Mac)

  ftp 你的服务器公网IP
  # 输入用户名: ftpuser
  # 输入密码
  # 然后尝试 ls 或 put/get 文件

使用图形客户端(FileZilla / WinSCP)

- 主机:你的服务器公网IP

- 协议:FTP(不是SFTP,也不是FTPS)

- 加密:如果需要纯文本连接,选“只使用普通FTP”(不安全),或选择“使用显式FTP over TLS”(需要额外配置SSL证书,略复杂)

- 登录类型:正常

- 用户:ftpuser

- 密码:你设置的密码

- 传输设置:被动模式(默认通常是,如果不行则手动切换)

常见问题排查

1、连接不上,提示“连接被拒绝”

- 检查阿里云安全组是否放通21端口

- 检查服务器防火墙(firewalld)是否放通21端口。

- 检查vsftpd 服务是否启动 (systemctl status vsftpd)。

2、能连接成功,但执行ls 或上传下载时卡住

这是最典型的问题,原因通常是被动模式数据端口没有放通

- 确认vsftpd.conf 里是否配置了pasv_min_portpasv_max_port

- 确认阿里云安全组是否放通了对应的端口范围(30000-31000)。

- 确认服务器防火墙是否放通了该范围。

3、登录成功,但无法上传文件

- 检查write_enable=YES 是否已设置。

- 检查用户对 FTP 目录的写权限。

      sudo chown ftpuser:ftpuser /home/ftpuser
      sudo chmod 755 /home/ftpuser

4、连接成功后提示“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”

- 你开启了chroot_local_user=YES,同时允许了写入,需要在配置文件最末尾添加:

      allow_writeable_chroot=YES

然后重启服务。

5、Windows FTP 命令行连接乱码

- 建议使用 FileZilla 等支持 UTF-8 的客户端。

安全性建议

避免使用明文 FTP:在任何公网场景下,强烈建议升级为FTPS(FTP over SSL/TLS)SFTP(SSH File Transfer Protocol),FTP 的密码是明文传输的。

限制访问IP:在阿里云安全组中,尽量将授权对象0.0.0.0/0 改为你公司或家庭的固定公网IP。

使用专用用户:不要给 FTP 用户sudo 权限,并且使用-s /sbin/nologin 限制 shell。

按照以上步骤操作,你应该能成功在阿里云上配置并使用 FTP 服务器,如果还有问题,请告诉我具体的错误信息,我可以帮你进一步分析。

文章摘自:https://idc.huochengrm.cn/fwq/25466.html

评论