如果 Windows 10 上有防火墙,则命令提示符 FTP 会挂起任何命令

如果 Windows 10 上有防火墙,则命令提示符 FTP 会挂起任何命令

我正在尝试连接到 ftp 服务器并从批处理文件中执行许多操作。但是,在任何新计算机上,即使允许端口 20 和 21 进出,当我运行任何命令(例如 ls 或 cd )时,它都会挂起200 PORT command successful。它可以正常登录,但一旦我尝试执行某些操作,它就会挂起。如果我关闭防火墙,它就可以正常工作,但这并不理想。我必须更改哪些其他端口或设置?

答案1

端口 21 是 FTP 的控制端口,FTP 客户端会连接到该端口。端口 20 是源端口FTP 服务器连接的数据连接使用主动模式(即命令)时PORT。这意味着,如果您确实想允许 FTP 主动模式,则需要允许连接来自端口 20而不是允许连接到端口 20。

最好一开始就不要使用主动模式。使用主动模式时,服务器会连接到客户端,如果涉及防火墙,这将是一场噩梦,如果涉及 NAT,情况会更糟 - 即几乎所有互联网访问都来自典型的 SoHo 路由器后面的本地网络。

请使用被动模式,该模式专为客户端位于防火墙和/或路由器执行 NAT 的场景而设计。另一方面,如果客户端和服务器都位于防火墙或 NAT 后面,则建立数据连接将非常困难甚至不可能(取决于防火墙和路由器)。

换句话说:FTP 必须消亡。如果可能的话,使用 SFTP(而不是 FTPS)或 HTTP(S) 等协议来传输数据,因为这些协议不会导致使用 FTP 时出现的噩梦般的问题。

相关内容