如何在Windows命令提示符下使用被动FTP模式?

在Ubuntu中, ftp -p for passive模式工作正常。

我如何在Windows中做同样的事情?

我试图用quote pasv但我得到以下错误:

 230 OK. Current restricted directory is / ftp> quote pasv 227 Entering Passive Mode (31,170,167,221,116,239) ftp> cd os 250 OK. Current directory is /os ftp> dir 500 I won't open a connection to 10.23.16.248 (only to 113.193.128.177) 425 No data connection ftp> 

我的防火墙被禁用。

Windows实际上不支持被动模式。

您可以通过三种不同的方式将命令发送到服务器,但不能在Windows客户端启用被动模式。

这些论据是用来发送各种命令的,而pasv并不是微软想到的。

你将不得不find像WinSCP这样的支持命令行使用的第三方软件,而不是Windows本地软件。

Windows FTP命令行客户端( ftp.exe )不支持任何版本的Windows上的被动模式。 由于无处不在的防火墙和NAT,现在它变得毫无用处。

使用quote pasv不会帮助。 它只将服务器切换到被动模式,而不是客户端


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

例如, WinSCP默认为被动模式,可以将Windows FTP脚本转换为WinSCP脚本 。

(我是WinSCP的作者)

CURL客户端支持FTP协议,适用于被动模式。 获取下载没有SSL版本,你不需要任何openssl.dll库。 只需一个curl.exe命令行应用程序。
http://www.paehl.com/open_source/?CURL_7.35.0

 curl.exe -T c:\test\myfile.dat ftp://ftp.server.com/some/folder/myfile.dat --user myuser:mypwd 

另一个是腻子psftp.exe但服务器密钥validation提示需要一个技巧。 这个命令行inputNO作为提示意义键不存储在registry中,只是这个时候正在使用。 你需要一个外部的脚本文件,但有时如果你复制多个文件上下。
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html上;

 echo n | psftp.exe ftp.server.com -l myuser -pw mypwd -b script.txt 

script.txt(任何ftp命令都可以input)

 put "C:\test\myfile.dat" "/some/folder/myfile.dat" quit 

quote PASV命令不是对ftp.exe程序的命令,它是FTP服务器请求数据传输的高阶端口的命令。 被动传输是一种通过这些高阶端口的FTP数据,而控制权保留在低端口的传输。

Windows ftp.exe程序可用于发送FTP服务器命令,以在两台FTP服务器之间进行被动数据传输。 一个标准的Windows安装将不会,也可能不应该有FTP服务器服务运行作为被动传输的端点。 因此,如果需要使用标准Windows机箱进行被动传输,则需要使用ftp.exe以外的解决scheme作为FTP到本地主机,因为其中一个连接在大多数Windows环境中都不起作用。

您可以在两个不同主机(但不是同一主机上的两个连接)之间进行被动FTP传输,如下所示:

打开两个提示符,用一个ftp.exe连接到你的源FTP服务器,一个用ftp.exe连接到你的目的FTP服务器。

现在使用原始命令PASV和PORTbuild立服务器之间的被动连接。 quote PASV命令将以省略号中的IP /端口进行响应。 将该数据用于quote PORT <data>命令。 假设防火墙没有阻塞四个端口中的一个或多个端口(2个用于FTP控制,2个用于FTP数据)

接下来用quote STOR <filename>命令接收数据到接收FTP服务器,然后将控制命令quote RETR <filename>发送到源FTP服务器。

所以对我来说:

 client 1 > ftp.exe server1 ftp> quote PASV 227 Entering Passive Mode (10,0,3,1,54,161) client 2 > ftp.exe server2 ftp> quote PORT 10,0,3,1,54,54,161 ftp> quote STOR myFile client 1 ftp> quote RETR myFile 

Cavet:我正在连接一些旧的FTP服务器YMMV

虽然这不直接回答有关命令行的问题,但是从Windows操作系统,请使用Windows资源pipe理器ftp:// username @ server

这将默认使用被动模式

对于命令行,主动模式是默认的

这是一个普遍的问题。 当我们启动ftp连接时,只有外部ip打开了pasv连接的端口。 但NAT后面的IP不会打开连接,因此被动连接将失败,并使用PASV命令

我们需要指定在打开连接的同时打开连接

ftp -p {host}

FileZilla很好。 我使用FileZilla FTP客户端“手动传输”,它支持被动模式。

示例:打开FileZilla并select“传输”>>“手动传输”,然后在手动传输窗口中执行以下操作:

1)确认正确的下载/上传选项2)对于远程:input要下载文件的目录的名称3)对于远程:input要下载的文件的名称4)对于本地:浏览到所需的目录想要下载文件到5)对于本地:input一个文件名来保存下载的文件作为(使用相同的文件名作为下载文件,除非你想改变它)6)checkbox“立即开始传输”,点击“确定“7)下载应该暂时启动8)注意:如果您忘记了checkbox”立即开始传输“…没有问题:只需右键单击要下载的文件(在Process Queue(文件传输队列)中FileZilla窗口底部和select“Process Queue”9)下载过程应该马上开始10)完成