在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>
Run Code Online (Sandbox Code Playgroud)
我的防火墙被禁用了.
Mar*_*ryl 47
Windows FTP命令行客户端(ftp.exe)在任何版本的Windows上都不支持被动模式.由于无处不在的防火墙和NAT,它现在变得毫无用处.
使用quote pasv将无济于事.它只将服务器切换到被动模式,而不是客户端.
请改用其他任何Windows FTP命令行客户端.大多数其他支持被动模式.
例如,WinSCP默认为被动模式,并且有一个指南可用于将Windows FTP脚本转换为WinSCP脚本.
(我是WinSCP的作者)
tra*_*lad 39
Windows实际上不支持被动模式.
您可以通过三种不同的方式将命令发送到服务器,但不会在Windows客户端启用被动模式.
这些参数用于发送各种命令,pasv并不是微软在编写时所想到的.
您必须找到支持命令行使用的第三方软件,如WinSCP,并使用它而不是Windows本机软件.
小智 11
虽然这不直接回答有关命令行的问题,但是从Windows操作系统,请使用Windows资源管理器ftp:// username @ server
这将默认使用被动模式
对于命令行,活动模式是默认模式
该quote PASV命令不是ftp.exe程序的命令,它是FTP服务器请求高阶端口进行数据传输的命令.被动传输是指通过这些高阶端口的FTP数据,而控制在较低端口中维护的传输.
Windows ftp.exe程序可用于发送FTP服务器命令,以在两个FTP服务器之间进行被动数据传输.标准的Windows安装不会,也可能不应该将FTP服务器服务作为被动传输的端点运行.因此,如果需要使用标准窗口框进行被动传输,则除了ftp.exe作为其中一个连接的localhost FTP所必需的解决方案在大多数Windows环境中都不起作用.
您可以在两个不同的主机(但不是同一主机上的两个连接)之间实现被动FTP传输,如下所示:
打开两个提示,使用一个ftp.exe连接到源FTP服务器,一个ftp.exe连接到目标FTP服务器.
现在使用原始命令PASV和PORT在服务器之间建立被动连接.该quote PASV命令将以省略号中的IP /端口进行响应.将该数据用于该quote PORT <data>命令.现在建立了被动链路,假设防火墙没有阻塞四个端口中的一个或多个(FTP控制为2,FTP数据为2)
接下来开始使用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
Run Code Online (Sandbox Code Playgroud)
Cavet:我正在连接一些旧的FTP服务器YMMV
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
Run Code Online (Sandbox Code Playgroud)
另一个是Putty psftp.exe,但服务器密钥验证提示需要一个技巧.此命令行输入NO表示提示含义,此时正在使用的密钥未存储在注册表中.您需要一个外部脚本文件,但如果您上下复制多个文件,有时它会很好.
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html上
echo n | psftp.exe ftp.server.com -l myuser -pw mypwd -b script.txt
Run Code Online (Sandbox Code Playgroud)
script.txt(可以输入任何ftp命令)
put "C:\test\myfile.dat" "/some/folder/myfile.dat"
quit
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您使用的是 Windows 10,请安装适用于 Linux、WSL 和 Ubuntu 的 Windows 子系统。
$ ftp 192.168.1.39
Connected to 192.168.1.39.
............
230 Logged in successfully
Remote system type is MSDOS.
ftp> passive
Passive mode on.
ftp> passive
Passive mode off.
ftp>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
295083 次 |
| 最近记录: |