云服务器ftp连接不上,九成问题出在安全组规则、服务端口和被动模式三个环节,按顺序排查就能解决。这几项是云服务器和本地电脑最大的区别,也是新手最容易卡住的地方,下面直接从最常见的原因讲起,每一步都有对应操作。
云服务器ftp连接不上时,先做这三项基础检查
开始动防火墙和配置之前,先用本地电脑做几个快速验证,能省下大量时间。
确认本地网络到服务器的21端口是否通
在本地电脑按下 Win+R 输入 cmd,然后执行:
telnet 你的服务器公网IP 21
- 如果出现连接失败或者超时,说明网络层就不通,问题大概率在云厂商的安全组或者系统防火墙。
- 如果连接后显示
220开头的欢迎信息,说明端口是通的,问题出在FTP客户端配置或服务端参数上。
没有telnet命令的Windows用户,可以打开“控制面板”→“程序”→“启用或关闭Windows功能”,勾选“Telnet客户端”安装后重试,大多数情况下这一步能直接定位到故障层级。
检查云厂商安全组是否放行了FTP端口
这是云服务器ftp连接失败原因里占比最高的一个,国内主流云厂商如简米云、酷番云、华为云,默认安全组只放行22(SSH)、80(HTTP)、443(HTTPS)等端口,21端口默认是被拦住的。
操作路径为:云厂商控制台 → 找到“安全组”或“防火墙” → 选择实例绑定的安全组 → 点击“入方向规则”或“添加规则” → 添加如下规则:
| 协议类型 | 端口范围 | 来源IP | 说明 |
|---|---|---|---|
| TCP | 21 | 0.0.0/0 | FTP控制连接端口 |
| TCP | 1024-65535 | 0.0.0/0 | 被动模式数据端口(按实际配置收窄) |
放行后等一两分钟再试,安全组规则的生效速度一般不需要重启机器。
确认服务器系统防火墙没在拦截
系统防火墙是独立于云安全组的另一道门,以CentOS和Ubuntu为例:
CentOS 7+ / Rocky Linux:
systemctl status firewalld
如果状态是 active (running),执行:
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=1024-65535/tcp --permanent
firewall-cmd --reload
Ubuntu / Debian:
ufw status
ufw allow 21/tcp
ufw allow 1024:65535/tcp
直接把防火墙关掉的方案并不推荐,但如果你只是想快速验证是不是防火墙导致的问题,可以临时执行 systemctl stop firewalld,确认后立即恢复,再把规则加准确,行业共识认为,安全组和系统防火墙叠加放行是云服务器FTP配置的标准姿势。
云服务器怎么设置ftp被动模式才能连上
很多用户在简米云服务器配置ftp服务器后,显示“服务器发回了不可路由的地址”或者“数据连接超时”,这基本就是被动模式没配置好。
主动模式和被动模式的区别
FTP有主动模式和被动模式两种数据连接方式:
- 主动模式:服务器主动连接客户端的随机端口,本地有防火墙时容易失败。
- 被动模式:客户端主动连接服务器的指定端口范围,由服务器在PORT命令后告知客户端一个端口号。
云服务器处于NAT和公网IP映射的环境下,被动模式更可靠,但必须手动指定端口范围并把范围写入安全组。
vsftpd的核心配置片段
主配置文件在 /etc/vsftpd/vsftpd.conf,推荐按下面这组参数配置:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES allow_writeable_chroot=YES pasv_enable=YES pasv_min_port=10240 pasv_max_port=10390
pasv_min_port 和 pasv_max_port 是关键,把这两个值对应的端口段加入安全组,加上21控制端口,云服务器怎么设置ftp端口才能稳定连接的问题就解决了一大半。
修改配置后重启服务
systemctl restart vsftpd
systemctl enable vsftpd
然后执行 netstat -tlnp | grep vsftpd 确认监听状态,监听地址应该是 0.0.0:21 而不是 0.0.1:21,后者表示只允许本机连接,需要检查 listen_address 相关配置。
云服务器ftp连接不上的常见客户端设置问题
服务端配置好了,客户端这边的设置同样决定成败,相当一部分用户卡在这一步。
FileZilla等客户端要选对模式
用FileZilla连接云服务器FTP时,需要确认以下几点:
- 传输模式选择“被动模式”,不要选主动模式。
- 加密方式选择“如果可用,使用显式的FTP over TLS”或者“只用FTP”。
- 如果服务器没有配置TLS证书,客户端默认强制加密会导致握手失败,把加密选项改为“只用纯FTP”即可。
主动模式连接的具体报错表现
当客户端报错“无法打开数据连接”“服务器积极拒绝”时,多数情况下是主动模式被云安全组拦了,解决方法:在FileZilla菜单“编辑”→“设置”→“连接”→“主动模式”里勾选“回到PASV模式”,用户名和密码保持不变重试。
多网卡云服务器的地址问题
部分云服务器有公网IP和私网IP双网卡,FTP服务端返回的被动模式地址默认走内网IP,导致客户端拿到192.168开头的地址直接连不上,vsftpd配置里可以通过 pasv_address=你的公网IP 强制指定,或者配置多个监听地址。
为什么现在更建议直接用SFTP替换传统FTP
很多操作简单、安全性要求更高的场景下,云服务器ftp连不上的排查成本其实大于改用SFTP的成本,SFTP跑在SSH的22端口上,不需要额外配置安全组,也不存在主动被动模式问题。
SFTP能解决的根本性问题
- 云服务器安全组只需要放行22端口,减少暴露面。
- 用和SSH相同的账号密码或密钥登录,省去添加FTP用户的步骤。
- 数据全程加密,无法被嗅探。
国内云服务器FTP和SFTP的对比
| 对比维度 | 传统FTP(vsftpd) | SFTP(OpenSSH自带) |
|---|---|---|
| 端口要求 | 21 + 被动端口段 | 仅22 |
| 安全组规则 | 需要额外放行 | 通常已放行 |
| 加密传输 | 默认明文,需另配TLS | 默认加密 |
| 配置复杂度 | 较高 | 零配置 |
| 适合场景 | 内网传输/兼容老旧设备 | 公网数据传输 |
如果你的业务场景允许,直接在FileZilla里用 sftp://公网IP 连接即可,这和网上查到的“云服务器ftp连接不了的快速替换方案”一致,省时又安全。
云服务器ftp连接不上排查实操问答
FTP登录成功但列目录超时,是什么原因?
典型被动模式数据端口未放行,检查服务器上 pasv_min_port 和 pasv_max_port 设置,把端口范围加入云厂商安全组和系统防火墙,如果绑定的是多IP服务器,还需要确认 pasv_address 指向公网IP。
用简米云服务器配置ftp服务器时,安全组规则怎么填才正确?
需要配置两条:一条放行TCP 21端口用于登录,一条放行你设置的被动端口范围(比如10240-10390),两条规则的来源IP都填0.0.0.0/0,如果公司局域网有固定出口IP,收窄到该IP更安全,填写后立即生效,不用重启服务器。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/755700.html





