FTP远程连接时,默认端口是21,但数据端口会根据主动或被动模式而变化;若使用SFTP或FTPS,端口号还会变成22、990或989,具体取决于协议和配置。
FTP远程连接默认端口怎么设置才算标准
很多朋友第一次搭FTP服务器或连别人空间时,都会问FTP远程连接服务器端口到底是多少,其实这个问题要分两层看:一个是控制连接用的端口,另一个是数据传输用的端口。FTP控制端口默认是21,这是IANA规定的标准,几乎所有FTP服务端软件如FileZilla Server、ProFTPD、vsftpd,安装后默认都是监听21端口,客户端连接时,如果没手动指定端口,工具也会自动使用21。
但数据传输端口就不一样了,主动模式下,服务端用20端口向客户端发起数据连接;被动模式下,服务端会随机打开一个高位端口(通常是1024以上的范围)等待客户端来连,所以仅仅知道一个21并不够,实际部署时还要考虑数据端口是否放行。
控制端口与数据端口的分工
控制端口负责发送指令,比如登录认证、切换目录、删除文件这些操作,全程走21端口,数据端口才是真正传输文件内容的通道。主动模式数据端口固定为20,服务端主动连接客户端;被动模式数据端口是动态的,服务端告诉客户端一个临时端口,然后客户端去连,多数情况下,内网环境、防火墙严格的场景下,被动模式更常用,因为客户端不需要开放端口,只需要能访问服务端的高位端口。
主动模式与被动模式的端口差异
- 主动模式:服务端用20端口连接客户端指定的随机端口,如果客户端在内网,防火墙会拦截服务端的主动连接,容易失败。
- 被动模式:服务端开放一个范围的高位端口(如50000-50100),客户端直接连接这个端口,客户端只需能出站即可,兼容性更好。
行业共识认为,
80%以上的FTP连接故障都出在数据端口被防火墙阻断,尤其是被动模式端口范围没有正确配置。
FTP、FTPS、SFTP端口号有什么不同
很多新手会混淆FTP、FTPS、SFTP,以为它们都用同一个端口。FTP和FTPS默认端口是21和990,SFTP端口是22,如果你正在纠结ftp端口21和22区别,简单说就是协议不同:21是FTP控制端口,22是SSH服务端口,SFTP依赖SSH,所以走22。
FTP标准端口21和20
经典FTP,明文传输,控制端口21,数据端口20(主动)或动态高位(被动),安全性差,密码和文件内容都是明文,现在大多只在内网或调试环境用。
FTPS端口990和989
FTPS是FTP over SSL/TLS,在FTP基础上加了加密层。显式FTPS(Explicit)仍用21端口,客户端登录后再协商加密;隐式FTPS(Implicit)专用端口990,连接后直接开始SSL握手,数据端口在隐式模式下使用989,部署时如果选用隐式,记得在防火墙上放行990和989。
SFTP端口22
SFTP不是FTP,它基于SSH传输文件,默认端口就是SSH的22,很多云服务器厂商默认只开放22端口,所以如果你用SFTP连接,不用额外配置FTP端口,但注意,SFTP和FTP不兼容,客户端必须支持SFTP协议(如WinSCP、FileZilla选择SFTP模式),如果你需要同时提供FTP和SFTP,最好让它们用不同端口,避免冲突。
如何检查FTP服务器端口配置是否正确
配置FTP端口时,光改服务端还不行,还要验证防火墙和客户端是否能正常通信,下面几个实操步骤可以帮助你完成ftp服务器端口开放检查。
命令行测试端口连通性
- 在客户端用
telnet <服务器IP> 21,如果出现FTP欢迎信息,说明控制端口通。 - 测试被动模式端口:先登录FTP,执行
PASV命令,服务端会返回一串IP地址和端口号(如227 Entering Passive Mode (192,168,1,1,195,138)),最后两个数字乘以256再加第二个数得到端口:195256+138=50058,然后在本机用
telnet <服务器IP> 50058看能否连上。 - 如果telnet不通,检查防火墙、安全组规则是否放行了对应端口。
修改服务端端口配置
以vsftpd为例,修改/etc/vsftpd.conf:
listen_port=2121 # 修改控制端口为非标准
pasv_min_port=50000
pasv_max_port=50100 # 限定被动模式端口范围
修改后重启vsftpd,并在防火墙放行这些端口,如果使用云服务器,需要在安全组中同时添加TCP 2121和50000-50100的入站规则。
客户端配置注意事项
- 如果服务端端口改为非标准,客户端连接时需手动输入端口,如
ftp://192.168.1.1:2121。 - 被动模式端口范围要与服务端一致,否则数据连接失败,FileZilla客户端可以在“站点管理器-传输设置”中限制被动模式端口范围,一般不需要改,但服务端必须开放那些端口。
遇到FTP端口连接失败怎么办
实际运维中,FTP端口连接失败是最常见的场景之一,原因往往不是端口不对,而是防火墙或模式不匹配,下面列出几个典型问题及解决方法。
防火墙端口放行
- 检查服务器防火墙:Linux用
iptables -L -n或firewall-cmd --list-all,Windows用netsh advfirewall firewall show rule。 - 云服务器安全组:确保入站规则允许21端口(或自定义端口)以及被动模式端口范围。
- 如果客户端连接超时,大概率是防火墙没放行数据端口。建议将被动模式端口范围固定,然后在防火墙和安全组中统一放行。
端口被占用
- 服务端启动时提示端口绑定失败,说明21端口已被其他程序占用,用
netstat -tlnp | grep 21查看哪个进程占用了21端口,通常是其他FTP服务或Web服务误用了。 - 解决方案:停止占用程序,或修改FTP服务端口为其他值(如2121),然后客户端对应修改连接端口。
主动模式与被动模式不匹配
- 客户端主动模式连接时,服务端会尝试连接客户端的随机端口,如果客户端在NAT或防火墙后,连接会被阻断,此时应切换到被动模式。
- 大多数现代FTP客户端默认使用被动模式,但如果服务端被动模式端口被防火墙限制,也会失败。确保服务端被动模式端口范围正确配置并已放行。
关于FTP远程连接端口的常见疑问
问:FTP默认端口21连不上,可能是什么原因?
答:原因很多,最常见的是服务器防火墙没有放行21端口,或者服务端服务未启动,如果服务器运营商在机房防火墙上限制了21端口(比如某些海外主机商),也会导致连接失败,建议先本地telnet 21端口确认服务端是否监听,再检查网络层面的访问控制。
问:FTP被动模式端口范围如何确定?
答:被动模式端口范围由服务端设置,一般建议在配置文件中指定一个较小的范围,比如50000-50100,方便防火墙统一放行,客户端不需要知道具体范围,服务端会通过PASV响应告知客户端端口号,但客户端所在网络如果也限制出站端口,需要确保客户端能访问服务端设定的端口范围。
问:SFTP和FTP端口一样吗?
答:不一样,SFTP默认端口是22,基于SSH;FTP默认端口是21,控制端口,两者是完全不同的协议,客户端不能混用,如果你需要加密传输,建议优先选择SFTP,因为配置更简单,防火墙只需开放22端口,且不需要额外管理数据端口。
FTP端口配置的难点不在数字本身,而在理解控制与数据通道的分离以及防火墙的联动,记住21是控制口,数据端口随模式变化,被动模式要固定范围并放行,才能保证稳定连接。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/559882.html




