FTP服务默认监听21端口,但实际运行端口可能因配置修改而不同,通过检查配置文件或使用网络命令即可确认具体端口号。
如何查看服务器FTP端口
无论你是刚接手一台服务器,还是需要排查连接问题,查清FTP端口都是第一步,不同操作系统和方法各有侧重,下面按场景拆解。
Linux系统查看FTP端口
- 检查vsftpd配置:如果使用vsftpd,执行
grep listen_port /etc/vsftpd/vsftpd.conf,默认输出通常是listen_port=21,若未设置,则默认21。 - 查看Pure-FTPd配置:执行
grep Port /etc/pure-ftpd/pure-ftpd.conf,输出类似Port 21。 - 使用netstat验证:
netstat -tlnp | grep ftp或netstat -tlnp | grep :21,如果端口被修改,21会变成自定义值,注意某些发行版可能没有netstat,可用ss -tlnp | grep ftp替代。 - 查看服务状态:
systemctl status vsftpd或systemctl status pure-ftpd,输出中通常包含监听地址和端口。
Windows系统查看FTP端口
- IIS管理控制台:打开IIS管理器,找到FTP站点,双击“FTP防火墙支持”,右侧可以看到“数据通道端口范围”,控制端口在站点绑定中查看,默认21。
- 命令行查看:
netstat -ano | findstr :21,如果端口被修改,将21替换为实际端口,也可以使用netsh advfirewall firewall show rule name="FTP"查看防火墙规则关联的端口。 - 注册表检查:FTP服务端程序(如FileZilla Server)的端口通常在安装目录配置文件中,或通过服务端界面查看,Windows自带FTP服务的端口在
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSFTPSVCParameters中,但多数情况下直接看IIS或命令行更快。
使用第三方工具确认
- Telnet快速测试:
telnet 服务器IP 21,如果端口开放,会显示FTP banner;如果拒绝连接,说明端口不对或服务未启动。 - 端口扫描工具:如
nmap -p 21 服务器IP,可以扫出指定端口状态,若自定义端口未知,可扫描常见端口范围(20-2121)或使用检测服务版本。nmap -sV 服务器IP
FTP默认端口21与自定义端口对比
许多刚接触FTP的人会问:为什么一定要用21?改成其他端口麻烦吗?这背后是安全与兼容性的权衡。
默认端口21的优势与局限
- 标准兼容性:几乎所有FTP客户端默认连接21端口,无需额外配置,即开即用。
- 防火墙策略成熟:多数防火墙预设了允许出站21端口的规则,企业内网部署时无需申请特殊策略。
- 安全风险公开:21端口作为FTP的标准入口,容易被扫描和暴力破解,行业共识认为,完全依赖默认端口会增加被攻击的几率。
自定义端口的典型场景
- 规避恶意扫描:将端口改为2121、8021等非标准值,能过滤掉大量自动扫描脚本,但不能替代强密码和加密。
- 端口冲突时:若服务器上其他服务已占用21端口(如某些Web管理面板),需要修改FTP端口。
- 内网穿透需求:通过公网映射时,常将FTP端口改为高位端口,避免与运营商策略冲突。
自定义带来的影响
- 客户端需要手动指定端口:连接时需在地址后输入
端口号,部分老旧客户端不支持非标准端口。 - 防火墙规则需重新配置:在安全组或iptables中开放自定义端口,否则连接失败。
- 被动模式端口范围调整:修改FTP控制端口后,被动模式数据端口范围通常也需要相应调整,否则客户端可能长时间无响应。
服务器FTP端口设置与修改步骤
如果你决定修改端口,需要同时调整服务端配置和防火墙规则,下面以Linux和Windows为例说明。
Linux修改vsftpd端口
- 编辑配置文件:
vim /etc/vsftpd/vsftpd.conf,添加或修改listen_port=2121。 - 重启服务:
systemctl restart vsftpd。 - 防火墙放行:
firewall-cmd --permanent --add-port=2121/tcp,然后firewall-cmd --reload,如果使用iptables,执行。iptables -A INPUT -p tcp --dport 2121 -j ACCEPT
- SELinux影响:若SELinux开启,需执行
setsebool -P ftpd_connect_all_unreserved 1,并确认自定义端口在ftpd_port_t类型中(默认已包含常用端口)。
Windows修改IIS FTP端口
- 打开IIS管理器,右键点击FTP站点,选择“编辑绑定”。
- 在“端口”框中修改为自定义值,如2121,点击确定。
- 防火墙放行:打开“高级安全Windows防火墙”,新建入站规则,允许TCP端口2121。
- 被动模式端口设置:如果被动模式依赖端口范围,在IIS管理器中双击“FTP防火墙支持”,设置“数据通道端口范围”(如50000-50100),并在防火墙中放行该范围。
服务端与客户端一致
- 修改端口后,客户端连接地址需同步更新:
ftp://服务器IP:2121(或直接在客户端输入),常见错误是只改服务端,客户端仍使用21,导致连接失败。 - 检查客户端是否支持被动模式,若支持,确保服务端被动端口范围与防火墙规则一致。
常见排查:FTP端口无法连接怎么办
当面对“无法连接到服务器”的提示时,不要急着怀疑端口被改,按系统顺序排查能快速定位。
第一步:确认服务状态
- Linux:
systemctl status vsftpd,如果服务未运行,systemctl start vsftpd并设置开机自启。 - Windows:服务管理器里看“Microsoft FTP Service”或FileZilla Server是否启动,也可在命令行输入
net start msftpsvc启动。
第二步:验证端口监听
- 使用
netstat -tlnp | grep 21(Linux)或netstat -ano | findstr 21(Windows),确认FTP进程正在监听,如果输出为空,说明端口未监听,大概率是配置问题或服务错误。 - 如果监听端口不是21,记下实际端口号,后续所有连接都使用该端口。
第三步:检查防火墙与安全组
- 云服务器:检查控制台的安全组入方向规则是否放行了TCP端口21(或自定义端口),常见错误是只放行了22端口,漏掉了FTP端口。
- 本地防火墙:Linux用
firewall-cmd --list-all查看;Windows检查防火墙入站规则,如果端口被临时屏蔽,telnet测试会显示超时。
第四步:被动模式与数据端口
- 当FTP控制连接成功,但传输列表或文件时卡住,多数是数据端口问题,被动模式需要服务端防火墙放行数据端口范围,客户端需要启用被动模式。
- 在vsftpd中,设置
pasv_min_port=50000和pasv_max_port=50100,并在防火墙中放行该范围,IIS同样需要设置并放行。
第五步:日志定界
- 查看FTP日志:vsftpd日志默认在
/var/log/vsftpd.log或/var/log/messages;IIS日志在%SystemDrive%inetpublogsLogFilesFTPSVC,日志中会记录拒绝连接原因,如“530 Login incorrect”或“425 Can’t open data connection”。
Q&A:服务器查看FTP端口常见问题
如何确认服务器上FTP端口是否被占用?
答:使用netstat -tlnp | grep :21(Linux)或netstat -ano | findstr :21(Windows)查看21端口是否被监听,如果被占用,输出会显示进程PID,如果占用程序不是FTP服务,需要修改占用程序端口或停止该程序,也可以使用lsof -i :21(Linux)查看相关进程。
修改FTP端口后客户端连接不上,可能是什么原因?
答:首先检查客户端是否使用了新端口(如ftp://ip:2121),其次确认服务端防火墙安全组已放行新端口,包括云厂商控制台和系统内部防火墙,如果服务端开启SELinux,需要设置setsebool -P ftpd_connect_all_unreserved 1,确保服务端配置文件中没有其他端口冲突,比如被动模式端口范围也需相应调整。
FTP端口21和端口20有什么关系?
答:FTP协议使用两个端口:21用于控制连接(发送命令和响应),20用于主动模式下的数据连接,当服务器主动模式时,数据连接使用20端口;被动模式下,数据端口由服务器随机分配一个高位端口,两者默认端口不同,但都受防火墙规则影响,修改21端口后,20端口通常保持不变,但需要确认主动模式是否启用。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/582391.html




