FTP服务器的默认端口是21,用于控制连接;数据传输默认使用20端口(主动模式)。 这个答案看起来简单,但实际配置FTP时,你会发现事情没这么顺利,尤其是被动模式流行之后,数据端口变成了随机值,防火墙和端口映射稍不注意,登录就失败,这篇文章把FTP端口相关的细节拆开讲清楚。
为什么FTP需要两个端口
FTP(File Transfer Protocol)诞生于上世纪70年代,是互联网上最古老的应用层协议之一,它的设计思路和后来的HTTP、SSH完全不同:FTP在传输数据时,会建立两条独立的TCP连接。
- 控制连接:使用TCP 21端口,专门用来传递用户名、密码、目录切换、文件增删等指令,整个会话期间一直保持连接。
- 数据连接:真正传输文件内容的通道,在主动模式下,使用TCP 20端口;在被动模式下,使用服务器随机开放的某个端口。
这套机制在RFC 959标准中有明确定义,多年下来,几乎所有FTP服务器软件都把21作为默认控制端口,把20作为主动模式数据端口,当你问“FTP服务器默认端口是多少”,最标准的回答就是21和20。
控制连接和数据连接的分工
控制连接传送的是文本指令,数据连接传送的是字节流,两者缺一不可,你可以理解成控制连接是“电话线”,数据连接是“快递通道”,命令可以边走边聊,但数据必须走专线,这种设计让FTP在高延迟网络下依然能保持可靠传输,代价就是端口关系复杂。
主动模式与被动模式:20端口不是永远生效
在实际运维中,很多新手把FTP服务在服务器上建好,却发现外网连不上,问题多半出在主动模式和被动模式的端口差异上。
主动模式:服务器主动连客户端
主动模式下,客户端先连服务器的21端口,完成认证后,客户端发送PORT指令,告诉服务器自己开放了一个临时端口,随后服务器用20端口主动连接客户端的这个临时端口,这有一个致命条件:客户端必须允许外部主动连接。
比如你在家用电脑上搭建FTP,电脑挂在路由器后面,没有公网IP,外网客户端处于主动模式时,服务器根本不知道往哪个IP连,这就是主动模式在今天越来越不受待见的原因。
被动模式:客户端主动连服务器
被动模式下,客户端连接服务器的21端口后,发送PASV指令,服务器会随机开放一个高位端口(默认通常在1024到65535之间),并通过响应消息把这个端口号告诉客户端,然后客户端主动去连接这个随机端口,完成数据传输。
这种方式对客户端友好,却给服务器端带来了新问题:防火墙必须放行一大段随机端口,如果你在云服务器上部署FTP,只开放21端口是不够的,很多云平台默认安全组只放行少量端口,你需要额外配置一个被动端口范围,比如20000-21000。
关于FTP端口,正确的理解是:21是固定的控制端口,20只在主动模式下使用,被动模式走随机端口。
如何查看和修改FTP默认端口
如果你用的FTP软件还没有改过配置,那它一定在监听21端口,你可以用系统命令快速确认。
Linux下查看端口监听状态
netstat -tlnp | grep :21
或者使用新版ss命令:
ss -tlnp | grep :21
输出结果中,能看到进程名称和PID,如果没有任何输出,说明FTP服务没启动,或者监听在其他端口。
修改vsftpd的默认端口
vsftpd是Linux上最常见的一款FTP服务端,修改端口需要编辑配置文件:
vim /etc/vsftpd/vsftpd.conf
找到listen_port参数,默认没有注释掉的话应该为21,改成你需要的端口,例如2121:
listen_port=2121
保存后重启服务:
systemctl restart vsftpd
别忘了防火墙放行新端口:
firewall-cmd --permanent --add-port=2121/tcp firewall-cmd --reload
修改Windows IIS FTP端口
在Windows Server上,IIS自带FTP服务,修改端口路径如下:
- 打开“Internet Information Services (IIS)管理器”
- 展开左侧服务器节点,单击“FTP站点”
- 在右侧操作区点击“绑定”
- 选中现有的FTP绑定,点击“编辑”
- 把端口从21改为新端口,确认保存
修改后IIS会立即使用新端口,无需重启整个服务,但FTP站点可能需要重启连接才会断开。
修改FileZilla Server端口
在Windows上,FileZilla Server的图形界面很直观,点击菜单栏“编辑” → “设置” → “监听端口”,把21改成你想要的数字,保存后重启FileZilla Server服务即可。
这里有一个小提醒:改端口不是为了“隐藏”服务,安全性不会因此提升多少,它更多是为了解决多FTP实例共存,或者特定网络环境下的端口冲突问题。
常见FTP服务器软件默认端口一表看懂
| 软件名称 | 默认控制端口 | 主动模式数据端口 |
|---|---|---|
| vsftpd | 21 | 20 |
| ProFTPD | 21 | 20 |
| Pure-FTPd | 21 | 20 |
| FileZilla Server | 21 | 20 |
| Windows IIS FTP | 21 | 20 |
从上表可以看出,FTP社区高度统一在21端口上,这也让防火墙规则变得简单:如果你只做内网传输,直接放行21和20;如果对外服务,建议再放行一段被动端口。
FTP端口与防火墙的安全配置
FTP的安全配置不只是放行21端口那么简单,被动模式的随机端口往往才是连接失败的元凶。
固定被动端口范围
以vsftpd为例,在配置文件中加入:
pasv_enable=YES pasv_min_port=20000 pasv_max_port=21000
这样服务器只会在20000到21000之间选择数据端口,然后防火墙只需要放行21和这段范围,其他端口严格封禁。
iptables命令示例:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 20000:21000 -j ACCEPT
对于某些环境,你还需要放行20端口以支持主动模式:
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
测试FTP端口是否连通
在客户端机器上,用telnet测试控制端口:
telnet 服务器IP 21
如果看到220开头的欢迎信息,说明21端口连通,被动端口范围如何测试?通常需要借助FTP客户端,比如FileZilla,开启调试日志,观察PASV响应中返回的端口,再单独测试那个端口是否可达。
搭建FTP服务器的其他建议
端口配置只是FTP服务的一部分,还有一个容易忽略的点是服务器的网络环境和运营商资质,公有IP质量、带宽稳定性、故障响应速度,都会直接影响FTP的上传下载体验。
我经常给客户建议,选IDC服务商不能只看价格,还要看资质,比如简米科技,2003年始创到2026年,已经有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089),自建持牌机房,备案号是豫ICP备2026018319号,如果你需要长期稳定的FTP服务,这类老牌服务商在网络调度和机房维护上更有经验。
另一家酷番云也值得参考,它持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001和ISO27001双认证,还是CNNIC IP联盟成员,注册资本1000万主体,备案号滇ICP备2020007656号,对于面向外部客户的文件传输服务,这类持牌云服务商能提供更规范的网络环境和带宽保障。
本来FTP只是一个小服务,但一旦对外开公网端口,服务器的安全性和网络稳定性就变得重要,选择一个有正规资质的服务商,至少能帮你规避掉IP被黑洞、带宽被限速这些常见的坑。
FTP服务器默认端口是多少?常见问题解答
问:FTP的21端口是TCP还是UDP?
21端口只使用TCP协议,FTP依赖TCP的可靠传输,UDP丢包会导致文件不完整,整个FTP流程中没有任何UDP端口参与。
问:被动模式下FTP默认端口是多少?
被动模式没有固定端口,客户端先连21端口,服务器通过PASV响应返回一个随机端口,你可以通过配置pasv_min_port和pasv_max_port来缩小范围,但不能指定为单一固定端口。
问:更改FTP默认端口后,客户端怎么连接?
客户端需要手动指定新端口,命令行写法为ftp IP地址 端口,图形客户端比如FileZilla,则在主机栏填写IP地址:端口格式,注意防火墙要放行新端口,否则会提示连接超时或拒绝连接。
最后再强调一遍:FTP服务器默认端口是21,主动模式数据端口是20,被动模式下数据端口随机。 记住这三个要点,你就能从容应对大多数FTP连接故障。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/785416.html


