我尝试在匿名 FTP 会话中使用“ls”命令,但是当我输入“ls”命令时,我得到:
200 PORT 命令成功。请考虑使用 PASV。
它就像这样挂起(没有返回到 ftp 提示符)。
我重新启动了 ftp 会话并进入被动模式(引用 PASV),但我遇到了另一个问题:“没有到主机的路由”
你有什么建议吗?
答案1
quote PASV
没有按照您认为的方式进入被动模式 - “PASV”是一个立即命令(在每次传输之前),而不是永久的模式切换命令。
相反,客户ls
必须告知无论何时或请求文件传输时使用 PASV 而不是 PORT 。
和inetutils ftp工具, 使用passive
pftp
命令,或者以或形式运行客户端ftp --passive
。
答案2
我记得有一次我忘记在防火墙中打开端口 20 时遇到了这个问题。虽然通常与 FTP 关联的端口是 21,但数据通常通过端口 20 发送。
确保客户端和服务器上的 20 和 21 都打开,以便无论谁在端口 20 上发起连接都可以通过。
答案3
你有什么建议吗?
是的,放弃 FTP。
我知道这可能不是你想听到的答案,但让我解释一下为什么这实际上是必要的,然后你可能会更倾向于这样做。我还会给你另一种选择。
FTP 是在互联网还被视为实验项目时编写的。主要大学和大型组织都有行为准则,由受人尊敬的机构执行,因此互联网(当时实际上称为 ARPAnet)上的人们是值得信赖的。
FTP 的设计目标是让客户端使用 TCP 连接发送文件请求。然后服务器接收请求,并向客户端发起单独的 TCP 连接。
当客户端开始使用防火墙保护其内容时,这种情况就被打破了。因此 FTP 客户端可以进行传出连接,但传入连接被阻止。
解决这个问题的方法是被动模式:客户端使用 TCP 端口 21 发送请求,然后服务器表示它想要使用某个随机 TCP 端口(例如 43728)建立另一个连接,然后客户端使用指定的随机 TCP 端口(例如 43728)建立第二个连接。
如果客户端有防火墙,这种方法就行得通。许多人开始了解到“被动模式”可以解决 FTP 问题。然而,“被动模式”实际上解决的只是一个特定问题。如果服务器的防火墙只允许特定端口号上的传入流量,例如 FTP 的端口 21,那么即使是“被动模式”也无法解决工作所需的所有问题。
理论上,如果 FTP 服务器的防火墙支持 FTP 代理,该代理可以监控流量并在需要时打开另一个端口,则可以解决此问题。许多人认为这有点难以设置。
随着越来越多的组织更加关注安全性,而对 FTP 的关注度降低,人们开始意识到 FTP 已经变得普遍(这意味着越来越多的 FTP 服务器在越来越多的地方变得难以使用,人们可能会尝试使用 FTP 客户端)。FTP 问题开始变得更加普遍。
有一段时间,人们发现“被动模式”似乎是一种神奇的“万能”技术,可以解决 FTP 问题。(许多人不明白为什么 FTP 会停止工作。他们只是知道,如果 FTP 开始表现异常,“被动模式”似乎可以解决 FTP 遇到的奇怪问题。后来,“被动模式”是神奇的“万能”的信念被另一种信念所取代,即 FTP 通常似乎不再起作用(远不如以前那么好)。即使许多人不明白为什么 FTP 会崩溃,但他们确实明白,当他们尝试另一种技术时,生活似乎确实变得更顺利,即开始使用其他协议。随着 HTTPS 上传开始变得越来越流行,人们几乎不再使用 FTP。
因此,最好的解决方案是放弃旧的 FTP 协议,因为它与现代互联网安全措施不兼容。FTP 不是为此设计的。NAT 还用于帮助多个设备使用一个 IP 地址。
NAT 通常由防火墙实现,尽管它除了安全之外还有其他用途(例如增加支持的设备数量)。无论使用 NAT 的目的是什么,最终结果是 NAT 基本上会因为相同的原因(不允许连接到达所需设备)中断 FTP 连接。因此,FTP 也不是为支持 NAT 而设计的。
过去,FTP 只是一种尝试使文件传输正常工作的实验性尝试。FTP 实现了其最初的目标。因此,尽管 FTP 与当今的互联网设计配合得并不好,但它的设计并不差。当时,它的设计确实取得了巨大的成功。它只是为一种与使用当今常用技术的互联网不同的互联网风格而设计的。
HTTP 没有那么多问题,因为它使用一个 TCP 连接而不是多个。许多安全替代方案也是如此:HTTPS、SFTP、FTPS、SCP。
我承诺了另一种选择。那就是:让 FTP 工作。策略包括:* 让客户端防火墙运行 FTP 代理* 让 FTP 服务器的防火墙运行 FTP 代理
问题是你通常无法控制连接的一方。因此其中一种可能不适合你。
您可能想尝试完全移除防火墙。但是,这可能会带来大多数人认为没有好处的安全风险。相反,只需放弃使用与现代互联网不太兼容的旧 FTP 协议的想法,并使用一些现代软件来通过 HTTPS 或 FTPS(或 SCP)进行文件传输。它通常与防火墙配合得更好,与 NAT 配合得更好,并为您带来隐私的好处。(您真的不想在互联网上广播未加密的密码,是吗?)
除非您尝试获取公共文件,在这种情况下 HTTPS 或 HTTP 可能是更简单的途径。