在CentOS系统中管理和维护FTP服务时,准确知晓其监听的端口是至关重要的基础操作,这不仅关系到客户端能否成功连接,也直接影响防火墙策略的配置,FTP协议默认使用21端口作为命令连接端口,20端口作为数据传输端口(主动模式),但在实际应用中,尤其是出于安全考虑,管理员常常会修改这些默认设置,本文将详细介绍在CentOS中查看FTP端口的多种方法,并探讨相关的配置细节。

通过配置文件直接查看
最直接、最权威的方法是检查FTP服务软件的配置文件,在CentOS中,最常用的FTP服务是vsftpd(Very Secure FTP Daemon),其主配置文件位于 /etc/vsftpd/vsftpd.conf。
您可以使用 grep 命令快速筛选出与端口相关的配置项:
grep -i "listen_port" /etc/vsftpd/vsftpd.conf
- 如果命令返回了
listen_port=端口号(listen_port=2121),那么这就是FTP服务当前配置的监听端口。 - 如果该命令没有任何输出,或者该行以 开头(被注释掉),则意味着
vsftpd将使用其默认的21端口。
这种方法的优势在于它能明确显示服务的“意图”配置,无论服务是否正在运行。
使用网络状态命令动态查询
当FTP服务正在运行时,我们可以通过系统提供的网络状态查询工具来查看其当前实际监听的端口,这可以验证配置是否已生效。
使用 ss 命令(推荐)
ss 是 netstat 的现代替代品,执行效率更高,以下命令可以列出所有正在监听的TCP连接,并筛选出与FTP相关的进程:
ss -tulpn | grep ftp
-t: 显示TCP套接字。-u: 显示UDP套接字。-l: 仅显示处于监听状态的套接字。-p: 显示使用该套接字的进程。-n: 以数字形式显示端口号,不解析服务名。
输出结果中,Local Address:Port 列会明确显示FTP服务监听的IP和端口,0.0.0:21 或 ::2121。

使用 netstat 命令
netstat 是一个经典的工具,虽然在某些新版本中逐渐被 ss 取代,但依然广泛可用。
netstat -tulpn | grep ftp
其参数含义与 ss 基本相同,输出格式也类似,同样可以清晰地看到FTP服务占用的端口。
检查防火墙开放端口
FTP服务监听端口后,还需要在防火墙中放行该端口,外部客户端才能访问,检查防火墙规则也是一种间接确认端口的方式,CentOS 7及以上版本默认使用 firewalld。
# 查看已开放的所有端口 firewall-cmd --list-ports # 查看已开放的服务(ftp服务默认包含21端口) firewall-cmd --list-services
如果FTP服务使用了非标准端口,管理员需要手动开放,开放自定义的2121端口:
firewall-cmd --zone=public --add-port=2121/tcp --permanent firewall-cmd --reload
理解FTP被动模式端口范围
现代FTP客户端大多默认使用被动模式(PASV)以更好地穿透客户端防火墙,在被动模式下,服务器会开放一个范围内的随机端口用于数据传输,而不是固定的20端口,这个范围同样需要在 vsftpd.conf 中定义,并在防火墙中放行。
在 /etc/vsftpd/vsftpd.conf 中添加或修改以下配置:

pasv_min_port=30000 pasv_max_port=31000
这表示服务器将在30000到31000这个范围内选择端口用于被动模式的数据连接,配置后,务必在 firewalld 中开放这个端口范围。
| 方法 | 命令示例 | 说明 |
|---|---|---|
| 配置文件 | grep -i "listen_port" /etc/vsftpd/vsftpd.conf |
查看服务预设的监听端口,最权威。 |
| 网络状态 | ss -tulpn \| grep ftp |
查看服务运行时实际占用的端口,动态准确。 |
| 防火墙规则 | firewall-cmd --list-ports |
查看防火墙允许外部访问的端口,确认可达性。 |
相关问答FAQs
我已经在配置文件中修改了FTP端口,并重启了服务,但客户端仍然无法连接,为什么?
解答: 这通常是由两个原因造成的,也是最常见的原因,是您忘记在防火墙(firewalld或iptables)中开放新的端口,服务虽然在新端口上监听,但防火墙阻止了外部访问,请使用 firewall-cmd --add-port=新端口号/tcp --permanent 命令开放端口并重载防火墙,如果您的系统开启了SELinux,它也可能会阻止服务在非标准端口上监听,您需要使用 semanage port -a -t ftp_port_t -p tcp 新端口号 命令为SELinux添加新的FTP端口规则。
FTP连接可以建立,登录也成功,但获取文件列表或目录时就卡住或超时,是什么问题?
解答: 这是典型的FTP被动模式(PASV)数据连接问题,当您使用被动模式时,客户端在建立命令连接(如21端口)后,会请求服务器开放一个高端口用于数据传输,如果这个端口范围没有在服务器防火墙中正确开放,数据连接就会失败,导致上述症状,请检查您的 vsftpd.conf 文件中的 pasv_min_port 和 pasv_max_port 设置,并确保在防火墙中开放了整个端口范围,如果服务器位于NAT设备之后,还需要确保NAT设备正确转发FTP流量或启用FTP的ALG(应用层网关)支持。