服务器里面查看FTP端口号,最直接的方法是查看FTP服务配置文件(如vsftpd.conf)中的listen_port参数,或使用netstat、ss命令查看监听端口。默认情况下FTP使用21端口,但很多服务器出于安全考虑会修改为其他端口,下面我从配置文件、命令查询、客户端连接三个角度,把查端口这件事讲透。
为什么需要确认服务器上FTP的端口号
FTP服务不像HTTP那样固定用80端口,管理员为了减少扫描攻击,经常会把FTP端口改成2121、2221之类的非标准值,如果你要部署文件传输服务、配置防火墙规则、或者排查连不上FTP的问题,第一步必须确认实际端口号。
场景很常见:你接管了一台旧服务器,只知道上面跑着FTP服务,但前任管理员没交接端口信息,这时候如果再按21端口去连接,大概率会失败并报错“连接超时”或“拒绝连接”,搞清楚端口号,是打通文件传输链路的前提。
如何查看FTP端口号
查看FTP服务配置文件
绝大多数Linux服务器上的FTP服务由vsftpd或pure-ftpd提供,它们的端口配置写在明文文件里。
- vsftpd:编辑
/etc/vsftpd/vsftpd.conf,查找listen_port这一项,如果该行存在,后面的数字就是端口号;如果不存在,说明服务使用的是默认21端口。 - pure-ftpd:查看
/etc/pure-ftpd/pure-ftpd.conf中的Bind指令,Bind ,2121表示监听2121端口。 - Windows IIS FTP:在Internet Information Services (IIS)管理器中,右键点击FTP站点选择“绑定”,能看到该站点监听的端口号。
配置文件是“静态事实”,但要注意:有些服务会通过命令行参数覆盖配置文件,所以只读配置文件不一定百分百准确,最好结合下面的命令验证。
使用netstat或ss命令实时查看
命令查看的是服务进程实际监听的端口,这是最可信的方法,登录服务器后执行:
netstat -tlnp | grep ftp
或者用更现代的 ss 命令:
ss -tlnp | grep ftp
输出的结果中,LISTEN 状态下的地址如果是 21、2121 这样的格式,冒号后面的数字就是FTP端口,如果没有匹配到ftp进程名,可以改为查看所有监听端口,再根据PID找到对应进程:
ss -tlnp | grep vsftpd netstat -tlnp | grep proftpd
如果服务器上同时跑了多个FTP实例,grep 后会出现多行结果,每行代表一个监听端口,被动模式的数据端口范围不在这里显示,它由配置文件中 pasv_min_port 和 pasv_max_port 定义。
通过客户端日志反推端口
如果你手头有可用的FTP客户端(如FileZilla、WinSCP),尝试连接并抓取日志,连接成功后客户端日志第一行通常会显示类似“Connected to 192.168.1.10:2121”的信息,冒号后的数字就是服务器实际响应的端口,这个方法适合没有服务器登录权限、但有FTP账号的情况。
查看FTP端口号时容易忽略的细节
主动模式和被动模式端口不同
很多人以为FTP只要看一个端口就够了,其实FTP有控制连接和数据连接两套端口,控制连接默认是21或你查到的那个端口,用于发送命令;数据连接在主动模式下由服务器主动从20端口发起,在被动模式下服务器会开放一个随机高位端口(通常配置为10000-10100区间),如果你只查了控制端口而忽略被动端口范围,搭建防火墙规则时就会漏掉数据通道,导致能登录但无法列出目录。
实操建议:在vsftpd配置中同时检查 pasv_enable=YES 以及 pasv_min_port、pasv_max_port 的取值,把这段端口范围也记下来。
修改端口后必须同步防火墙和SELinux
找到端口号并不代表工作结束,如果你的服务器开启了firewalld、iptables或ufw,新端口未放行时外部连接会失败,例如CentOS系统执行:
firewall-cmd --permanent --add-port=2121/tcp firewall-cmd --reload
对于被动模式端口,也需要批量放行:
firewall-cmd --permanent --add-port=10000-10100/tcp
SELinux默认只放行21端口,改用其他端口时你会看到SELinux拦截日志,这时候需要执行:
setsebool -P ftpd_connect_all_unreserved 1
或者调整ftp端口对应的布尔值,具体操作以你的发行版文档为准。
端口号与网络安全的关联
非标准端口不等于安全
业内专家指出,把FTP端口从21改到高位端口,更多是防止扫描器快速识别,并非真正的安全加固措施,端口扫描工具可以全端口遍历,改端口只增加轻微成本,真正的安全靠的是禁用弱密码、开启FTPS(FTP over SSL)、限制IP白名单等措施。
如果你在公网服务器上运行FTP,建议通过 ss -tlnp 确认监听地址是否为 0.0.0,如果是,说明所有网卡都对外开放;如果只需要内网访问,应配置为内网IP。
地址和端口同时决定可连接性
查询端口时,不要只看数字而忽略IP绑定,用 ss -tlnp 显示 :21 表示监听所有接口,显示 168.1.10:21 表示只监听该IP,有些服务器配置了多个网卡,FTP只绑定其中一个,此时即便端口正确,从其他网段访问也会失败。
端口号查不到时的排查路径
如果你执行完上述命令都没有找到FTP端口,大概率是以下原因:
- FTP服务未运行,用
systemctl status vsftpd或ps aux | grep ftp检查进程是否存在。 - 服务名称不是ftp,可能基于xinetd托管,查看
/etc/xinetd.d/下的配置。 - 容器或虚拟化环境,Docker容器内跑FTP时,需要映射宿主机端口,用
docker port 容器名查看映射关系。 - 云服务商的安全组规则未放行,这属于外部防火墙,服务器内部命令查不到。
对应的方法是逐层剥离:先确认进程在不在,再看监听地址,最后检查安全组策略,多数情况下,端口明明查到了却连不上,问题出在安全组或云防火墙,而不是端口本身。
常见问题解答:服务器怎么查FTP端口号
问题1:Linux服务器上只有web界面没有SSH权限,怎么查FTP端口?
你可以尝试访问服务器的面板(如宝塔面板、cPanel),在FTP设置区域通常直接显示端口号,如果面板不可用,用FTP客户端做全端口扫描不现实,建议先尝试21端口,失败后联系服务器管理员获取权限,行业共识认为,没有命令行权限时唯一可靠的端口来源是服务管理面板或托管商提供的资料。
问题2:FTP端口改过之后,旧的21端口还能访问吗?
干净配置下不会,修改 listen_port 并重启服务后,21端口不再监听,但如果你同时配置了多个监听端口,21仍然有效,用 ss -tlnp 查看即可确认所有监听端口,避免遗漏旧端口带来的安全隐患。
问题3:被动模式端口范围在哪里看?
对于vsftpd,查看 /etc/vsftpd/vsftpd.conf 中的 pasv_min_port 和 pasv_max_port 项;如果没设置,服务器会默认使用1024以上的随机端口,这种情况下你需要在防火墙上放行全部高位端口,或者明确设置一个固定范围以便管理,很多云服务器配置FTP时连不上目录列表,就是因为被动端口没放行,这个问题在修改过FTP端口号后更容易出现,因为修改端口后容易忽略数据端口范围的同步调整。
最后提醒一句
查FTP端口号这件事本身并不复杂,配置文件加 ss 命令基本就能定位,但端口只是起点,后续的防火墙联动、SELinux策略和被动模式范围才是让FTP真正可用的关键,你找到端口后,建议顺手把控制端口、被动端口范围、监听IP这三个信息记录下来,下次配置客户端或防火墙时能省去来回查询的时间。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/761157.html




