命令行 FTP 功能不起作用

Hon*_*ong 13 ftp windows-7 command-line

我使用的是 Windows 7 并且有多个 FTP 客户端应用程序可以正常工作。但是,当我使用命令行 FTP 时,我可以连接、登录(输入用户名和密码后),但是使用 dir 或 ls 命令时总是断开连接。回应是:

远程主机关闭了连接。

我该如何解决这个问题?

hoo*_*enz 15

当服务器尝试连接回您但无法连接时,您通常会看到这种类型的事情发生。FTP 最初使用两个TCP通道。一个用于命令,另一个用于传输数据。当您运行 dir 命令时,它使用数据通道。数据通道是按需建立的,并导致服务器尝试重新连接到您。

这很可能被您的路由器或 Windows 防火墙阻止。您需要一个支持PASV模式的客户端。

您可以在 Internet Explorer 中启用 PASV 模式。或者使用不同的客户端。我不确定命令行版本是否可以使用 PASV 模式。这是一个非常基本的客户端。

  • 它需要是 QUOTE PASV (6认同)

小智 5

一旦我登录到有问题的框,我就遇到了通过 FTP 传输文件的问题。它会创建文件名,但文件是空的。我通过执行以下操作解决了它:

  • 转至控制面板 → Windows 防火墙 → 高级设置 → 入站规则
  • 双击名称列以按名称排序
  • 向下滚动,直到看到两个名为“文件传输程序”的规则;这些在我的电脑上被设置为阻止(大红色圆圈,有一条线穿过它)
  • 双击规则
  • General选项卡上的Action下,设置为Allow the connection
  • 点击 OK
  • 为其他规则执行此操作

现在去应该不错。


Mar*_*ryl 5

Windows FTP 命令行客户端ftp.exe仅支持主动 FTP 模式。

由于防火墙和 NAT,如今在主动模式下设置 FTP 可能很麻烦。

可能是因为您的本地防火墙或 NAT,服务器无法连接回您的客户端以建立目录列表(lsdir命令)的数据传输连接。

或者您的客户端不知道其外部 IP 地址,而是向服务器提供内部地址(在PORT命令中),服务器显然无法使用该地址。

请参阅我的文章主动模式的网络配置


如果可能,您应该使用被动模式,因为它通常不需要在客户端进行额外设置。

不幸的是,Windows FTP 命令行客户端 (the ftp.exe) 根本不支持被动模式。这使它在今天非常无用。

请改用任何其他 Windows FTP 命令行客户端。大多数其他支持被动模式。

例如 WinSCP 默认为被动模式,并且有一个指南可用于将Windows FTP 脚本转换为 WinSCP 脚本

(我是 WinSCP 的作者)