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

问题描述 投票:51回答:9

在Ubuntu ftp -p中,被动模式可以正常工作。

如何在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 ftp command-prompt
9个回答
48
投票

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

使用quote pasv将无济于事。它仅将服务器切换为被动模式,而不将客户端切换为被动模式。


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

例如,WinSCP默认为被动模式,并且有指南可用于转换Windows FTP script to WinSCP script

(我是WinSCP的作者)


39
投票

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

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

这些参数用于发送各种命令,而pasv并不是Microsoft编写它们时想到的。

[您将不得不找到支持命令行用法的WinSCP之类的第三方软件,并使用它代替Windows本机软件。


12
投票

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

这将默认使用被动模式

对于命令行,默认为活动模式


8
投票

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

windows ftp.exe程序可用于发送FTP服务器命令,以在两个FTP服务器之间进行被动数据传输。标准Windows安装不会(也可能不会)使FTP服务器服务作为被动传输的端点运行。因此,如果需要使用标准Windows盒进行被动传输,则必须使用ftp.exe以外的解决方案,因为FTP传输到localhost的方法是在大多数Windows环境中都无法使用该连接。

您可以在两个不同的主机(但不能在同一主机上的两个连接)之间实现被动FTP传输:

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

现在使用原始命令PASV和PORT在服务器之间建立被动连接。 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


6
投票

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


3
投票

如果使用的是Windows 10,请安装适用于Linux,WSL和Ubuntu的Windows子系统。


0
投票

这是一个常见问题。当我们启动ftp连接时,只有外部ip打开pasv连接的端口。但是NAT后面的IP无法打开连接,因此被动连接会因PASV命令而失败]


-1
投票

FileZilla运作良好。我使用支持被动模式的FileZilla FTP客户端“手动传输”。

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


-1
投票

据此Egnyte article,从Windows 8.1开始支持被动FTP。

注册表项:

© www.soinside.com 2019 - 2024. All rights reserved.