命令行FTP功能不起作用


12

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

连接被远程主机关闭。

我该如何解决这个问题?


在防火墙中打开端口20、21。
肖恩·帕金斯

Answers:


13

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

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

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


谢谢,马特。我以为默认情况下命令行FTP客户端使用被动模式,但是我发现有很多帖子说Windows命令行FTP实际上排除了被动模式。对于FTP,IE在我的机器上始终可以正常运行。我只想使用命令行来检查来自FTP服务器的一些原始数据。

作为实验,您可以查看在Internet Explorer中启用或禁用PASV是否有所不同..或给出类似或相同的错误。
barlop

1
ftp> PASV-无效命令。(Windows 7 Ent。)。这个答案正是工作中发生的事情。
2012年

6
它必须是QUOTE PASV
JosephStyons 2012年

5

登录到相关框后,我就无法通过FTP传输文件了。它将创建文件名,但是文件为空。我通过执行以下操作解决了该问题:

  • 转到控制面板→Windows防火墙→高级设置→入站规则
  • 双击“ 名称”列以按名称排序
  • 向下滚动,直到看到两个称为“文件传输程序”的规则;这些在我的PC上设置为“ 阻止 ”(带有红色线的大红色圆圈)
  • 双击规则
  • 在“ 常规”选项卡上的“操作”下,设置为“ 允许连接”
  • 请点击 OK
  • 换另一条规则

现在走应该很好。


这样做的安全隐患是什么?
彼得·莫滕森

PC上的程序现在可以使用ftp。
马克·戴文

删除规则,然后通过FTP连接并发出类似“ dir”命令的内容(触发Windows防火墙询问是否应允许FTP,然后重新创建规则,如果您说“是”)也可能会有所帮助。
mlvljr

5

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

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

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

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

请参阅我的文章“活动模式的网络配置”


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

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

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

例如,WinSCP默认为被动模式,并且提供了将Windows FTP脚本转换为WinSCP脚本的指南

(我是WinSCP的作者)


它可在任何版本的Windows(自XP)上运行。你得到什么错误?考虑问一个单独的新问题,并提供更多详细信息。
Martin Prikryl '18

您需要winscp.com和都winscp.exe在同一个文件夹中。我相信该错误消息清楚地表明在其文件夹中进行winscp.com查找winscp.exe。另请参见winscp.net/eng/docs/executables
Martin Prikryl,

Np,请删除评论。
马丁·普里克里

4

我在Windows 2008服务器上遇到此问题。

本文提出使应用层网关服务。这没有为我解决问题。

解决问题的方法是在Windows防火墙中为C:\ Windows \ system32 \ ftp.exe添加例外


1
默认情况下,Windows防火墙例外包括ftp.exe,但仅适用于家庭/工作网络。确保您不在公共网络上,否则也允许ftp用于公共网络。
Jags 2014年

1

我在Windows 7计算机上遇到了与第三方POS软件相同的问题,该软件将客户端事务数据批回到SQL Server。

直到客户端位置更改了ISP(因此更改了静态IP地址)之前,它都运行良好。命令行FTP命令在首次登录后无法正常工作,并且我在网上发现的任何补救措施都无效,或者此线程无效。

只是踢,我重新创造了防火墙的FTP规则,小气鬼d-link路由器/防火墙,和中提琴,它似乎可以正常工作了。


0

FTP问题

Azure NSG和服务器防火墙上的开放端口:21,20,4000-40009,990,14147

问题:客户端无法从命令行和Powershell连接到ftp

我们能够与testuser连接,但看不到目录/列表

在服务器和我的笔记本电脑上安装了Wireshark以捕获数据包在Wirehark上使用“ ftp”和“ IP”创建了一个过滤器数据包捕获并未说明天气是被动还是主动模式,并且源IP正确。(我们在服务器上配置主要IP和辅助IP)

我们发现在命令提示符下ftp连接不起作用。尝试启动与ftp.abcd.com的连接,该连接已解析为11.22.33.44,而不是实际的FTP服务器44.33.22.11 IP地址11.22.33.44和44.33.22.11均配置在同一台计算机上。但是,DNS解析为辅助FTP IP,而不是主要IP

最初,我们还发现与11.22.33.44的FTP连接工作正常,并且这些连接为活动连接。我们看不到“被动”模式在这里起作用。同样,当从Commad promt启动到11.22.33.44的连接时,会话在您发出“ dir”命令后冻结,但是对于其他FTP客户端(如FileZilla和Winscp)也是如此。

我尝试使用WinSCP和FileZilla进行测试,发现被动模式连接工作正常,而主动模式则不是预期的行为。我们检查了为什么成功通过身份验证后的设备无法使用“ dir”命令,我们发现Windows防火墙阻止了该连接。我们禁用了防火墙,一切都按预期开始工作。创建防火墙规则后,我在一端进行了检查,问题已解决。有一个系统即使在禁用防火墙后仍停留在目录列表中,这可能是该系统内的一个问题,或者是由于外部因素而阻止了连接。由于禁用后,我们大多数人都能正常工作。

需要在计算机上进行设置转到“控制面板”→“ Windows防火墙”→“高级设置”→“入站规则”双击“名称”列以按名称排序向下滚动,直到看到两个称为“文件传输程序”的规则;这些设置为在我的PC上为“阻止”(带有红色圆圈的大红色圆圈)双击规则在“常规”选项卡上的“操作”下,设置为“允许连接”,单击“确定”。


这就是@Keljo的答案已经说过的(实际上您已复制了他/她的答案)。
马丁·普里克里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.