服务器测评网
我们一直在努力

Linux FTP 端口是多少,如何查看 FTP 端口?

在Linux系统中,FTP服务默认使用21端口作为命令连接端口,而在主动模式下使用20端口进行数据传输,要快速准确地查看当前FTP服务所监听的端口及运行状态,最核心且专业的命令是使用ssnetstat工具结合grep进行过滤,例如执行ss -tunlp | grep ftp即可获取关键信息,若涉及被动模式,还需检查具体配置文件(如vsftpd.conf)以确定随机数据端口的范围。

Linux FTP 端口是多少,如何查看 FTP 端口?

FTP端口工作机制与查看原理

理解FTP端口的查看方法,首先需要掌握FTP协议的双端口架构,FTP服务在运行过程中并非仅占用一个端口,而是分为控制连接和数据连接。

控制连接始终使用TCP 21端口,用于发送FTP指令(如登录、列表、上传、下载),无论客户端是使用主动模式还是被动模式,21端口都是必须开启且始终监听的。

数据连接则根据模式不同有所差异,在主动模式下,服务器端会开启TCP 20端口主动连接客户端的数据端口;而在被动模式下,服务器会在配置文件指定的范围内(通常是1024以上的高位端口)随机开启一个端口等待客户端连接,查看FTP端口不仅仅是看21端口,往往还需要确认被动模式端口范围是否正常监听。

使用命令行工具精准查看端口

在Linux运维中,熟练掌握网络状态查看命令是排查故障的基础,以下是三种最主流且专业的查看方法,按推荐程度排序。

使用ss命令(推荐)

ss(Socket Statistics)是现代Linux发行版(如CentOS 7+、Ubuntu 18.04+)默认推荐的工具,它直接读取内核数据,执行效率远高于老旧的netstat

要查看FTP服务监听的端口,可以使用以下组合命令:
ss -tunlp | grep ftp

  • -t:显示TCP套接字。
  • -u:显示UDP套接字(FTP主要使用TCP,但加上u更全面)。
  • -n:不解析服务名称,直接显示端口号(如显示21而非ftp),避免歧义。
  • -l:仅显示监听状态的套接字。
  • -p:显示使用该套接字的进程名称和PID。

输出结果解读
如果看到LISTEN 0 128 [::]:21 [::]:* users:(("vsftpd",pid=1234,fd=3)),这表示vsftpd进程正在监听所有IPv6地址(兼容IPv4)的21端口,如果配置了被动模式,这里通常不会显示具体的数据端口,因为被动端口是在客户端请求时动态分配的。

使用netstat命令

虽然netstat已被逐渐废弃,但在很多旧系统中依然可用,其用法与ss类似:
netstat -tunlp | grep ftp

Linux FTP 端口是多少,如何查看 FTP 端口?

该命令的参数含义与ss基本一致,在排查问题时,若发现ss命令不存在,netstat是最佳的替代方案,需要注意的是,如果系统没有安装net-tools包,该命令将无法执行。

使用lsof命令

lsof(List Open Files)通过查看打开的文件来获取端口信息,非常适合需要确认具体进程对应关系的情况。
lsof -i :21

该命令会直接列出所有占用21端口的进程信息,如果需要查看被动模式端口范围(例如配置为60000-65535),可以使用:
lsof -i -P | grep vsftpd | grep LISTEN
这将列出vsftpd进程下所有处于监听状态的端口,包括被动模式开启的临时端口。

深入排查:被动模式端口与防火墙配置

在实际业务场景中,仅仅看到21端口开启往往不足以保证FTP服务正常工作,绝大多数现代客户端(如浏览器、FileZilla)默认使用被动模式,如果无法列出文件目录或传输数据,通常是因为被动模式的端口范围未在防火墙中放行。

确认被动模式端口范围

以最常用的vsftpd服务为例,需要编辑其配置文件/etc/vsftpd/vsftpd.conf,查找以下关键参数:

  • pasv_enable=YES:确认启用被动模式。
  • pasv_min_port=60000:被动模式最小端口。
  • pasv_max_port=65535:被动模式最大端口。

这些参数定义了FTP服务用于数据传输的随机端口池,查看这些配置是解决“能连接但无法传输数据”问题的关键步骤。

防火墙策略配置

确认了端口范围后,必须在系统防火墙(如Firewalld或iptables)中放行这些端口,使用Firewalld的配置命令如下:

  1. 放行21端口(控制连接):
    firewall-cmd --permanent --add-service=ftp
    或者直接指定端口:
    firewall-cmd --permanent --add-port=21/tcp

    Linux FTP 端口是多少,如何查看 FTP 端口?

  2. 放行被动模式端口范围(例如60000-65535):
    firewall-cmd --permanent --add-port=60000-65535/tcp

  3. 重载防火墙使配置生效:
    firewall-cmd --reload

对于云服务器(如阿里云、腾讯云),除了系统内部防火墙,还必须在安全组规则中放行上述端口,这是运维中常被忽视的外层网络限制。

常见问题与专业解决方案

在查看FTP端口的过程中,可能会遇到端口被占用或服务异常的情况,如果发现21端口未被监听,首先应检查FTP服务状态,使用systemctl status vsftpd,若服务启动失败,通常是因为配置文件语法错误或21端口已被其他程序(如另一个FTP服务ProFTPD)占用。

此时可以使用lsof -i :21查找占用进程,如果是无关进程,建议终止该进程或修改FTP服务的监听端口,修改监听端口同样在vsftpd.conf中,通过listen_port=2121参数即可实现,这在隐蔽FTP服务或规避端口扫描时是一种有效的安全策略。

相关问答

Q1:为什么我在Linux上使用netstat查看不到20端口,但FTP传输却是正常的?
A1:这种情况非常正常,说明您的FTP客户端工作在被动模式下,在被动模式中,服务器不会主动使用20端口去连接客户端,而是随机开启一个高位端口(如1024-65535之间)等待客户端连接,只有在客户端使用主动模式传输数据时,才能在服务器上观察到20端口的监听或连接状态。

Q2:如何在不登录服务器的情况下,远程探测一台Linux服务器开启了哪些FTP端口?
A2:可以使用nmap工具进行端口扫描,执行命令nmap -p 21 -sV <目标IP>可以探测21端口是否开放以及运行的服务版本,若要探测被动模式端口,由于端口是随机的,通常需要先通过21端口建立连接并获取PASV响应包,或者对全端口进行大范围扫描,但这在效率上较低,更实际的做法是联系服务器管理员确认配置的被动端口范围,然后针对该范围进行nmap扫描。
能帮助您全面掌握Linux FTP端口的查看与配置技巧,如果您在实操中遇到特殊的端口冲突问题,欢迎在评论区分享具体的报错信息,我们将共同探讨解决方案。

赞(0)
未经允许不得转载:好主机测评网 » Linux FTP 端口是多少,如何查看 FTP 端口?