命令行 FTP 功能不起作用

命令行 FTP 功能不起作用

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

远程主机已关闭连接。

我该如何解决这个问题?

答案1

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

这很可能被路由器或 Windows 防火墙阻止了。您需要一个支持肺动脉瓣关闭不全模式。

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

答案2

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

  • 转到控制面板 → Windows 防火墙 → 高级设置 → 入站规则
  • 双击姓名按名称排序的列
  • 向下滚动直到看到两个名为“文件传输程序”的规则;这些规则被设置为堵塞在我的电脑上(大红圆圈,中间有一条线)
  • 双击规则
  • 一般的标签下行动, 设置允许连接
  • 点击OK
  • 对另一条规则执行此操作

现在就可以出发了。

答案3

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

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

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

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

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


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

不幸的是,Windows FTP 命令行客户端(ftp.exe)根本不支持被动模式。这让它现在变得毫无用处。

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

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

(我是 WinSCP 的作者)

答案4

我在使用第三方时也遇到了同样的问题销售点Windows 7 计算机上的软件将客户端交易数据批量发送回 SQL 服务器。

在客户端位置发生变化之前,一切运行正常互联网服务提供商因此,IP 地址是静态的。命令行 FTP 命令在初次登录后不起作用,我在网上或本线程找到的所有补救措施都不起作用。

只是为了好玩,我在防火墙中重新创建了 FTP 规则,这是一个便宜的D-Link 路由器/防火墙,现在看来它又开始工作了。

相关内容