阿里云服务器 ftp 请切换主被动模式?

服务器

在使用阿里云服务器配置 FTP 服务时,主被动模式(Active vs Passive Mode) 是一个常见问题,尤其是在涉及防火墙、安全组或 NAT 环境(如云服务器)时。以下是关于如何切换主被动模式的详细说明:


一、FTP 主动模式(Active Mode)与被动模式(Passive Mode)的区别

模式 数据连接方向 说明
主动模式 客户端开一个端口,服务器主动连接客户端 服务器从20端口连接到客户端指定端口,容易被客户端防火墙拦截
被动模式 服务器开一个端口,客户端连接服务器 服务器告诉客户端一个端口,客户端去连接,适合客户端在防火墙后

在阿里云等云服务器环境中,推荐使用被动模式(Passive Mode),因为主动模式通常会被客户端防火墙或服务器安全组阻止。


二、为什么需要切换为主动/被动模式?

  • 主动模式失败原因:云服务器的安全组和客户端防火墙通常只开放了21端口(控制连接),但主动模式需要服务器反向连接客户端的随机高端口,这通常被阻止。
  • 被动模式更可靠:数据连接由客户端发起,只需在服务器上开放控制端口 + 被动模式端口范围即可。

三、如何在 FTP 服务器中配置被动模式(以 vsftpd 为例)

1. 编辑 vsftpd 配置文件

sudo vim /etc/vsftpd/vsftpd.conf

2. 启用被动模式并设置参数

添加或修改以下内容:

# 启用被动模式
pasv_enable=YES

# 被动模式使用的端口范围(建议使用固定范围,便于配置安全组)
pasv_min_port=30000
pasv_max_port=31000

# 服务器公网 IP(重要!尤其当服务器有内网IP时)
pasv_address=你的阿里云服务器公网IP

# 可选:监听地址
listen=YES
listen_ipv6=NO

⚠️ pasv_address 必须填写服务器的公网 IP,否则客户端获取的是内网 IP,无法连接。

3. 重启 vsftpd 服务

sudo systemctl restart vsftpd

四、配置阿里云安全组规则

登录 阿里云控制台:

  1. 进入 ECS 实例管理
  2. 找到你的实例,点击进入 安全组配置
  3. 添加以下规则:
协议类型 端口范围 授权对象
TCP 21 0.0.0.0/0 或指定IP
TCP 30000-31000 0.0.0.0/0 或指定IP(用于被动模式数据连接)

🔐 建议限制授权对象为可信 IP,避免全网开放。


五、客户端如何切换主被动模式?

FileZilla 客户端设置:

  1. 打开站点管理器
  2. 选择你的站点 → “传输模式” → 选择:
    • 主动(Active)
    • 被动(推荐)(Passive)
  3. 推荐选择 “被动”

命令行 FTP 工具:

ftp your-server-ip
ftp> passive     # 输入此命令切换为被动模式

六、常见问题排查

问题 解决方案
连接后卡在列表目录 检查是否启用被动模式,安全组是否放行 pasv 端口
提示 “425 Failed to establish connection” 通常是防火墙或 pasv_address 配置错误
只能登录不能传文件 检查数据连接端口是否开放
使用内网 IP 导致连接失败 确保 pasv_address 设置为公网 IP

总结

阿里云服务器建议使用 FTP 被动模式
✅ 配置 pasv_enable, pasv_min/max_port, pasv_address
✅ 安全组开放 21 和 pasv 端口范围(如 30000-31000)
✅ 客户端设置为被动模式


如果你使用的是其他 FTP 服务(如 ProFTPD、Pure-FTPd),配置方式略有不同,欢迎提供具体信息,我可以给出对应配置方法。

需要我帮你生成完整的 vsftpd.conf 示例吗?

未经允许不得转载:CDNK博客 » 阿里云服务器 ftp 请切换主被动模式?