gpt4 book ai didi

ftp - LFTP 主动模式,服务器无法识别 PORT 命令

转载 作者:行者123 更新时间:2023-12-02 06:01:45 28 4
gpt4 key购买 nike

我正在使用 LFTP 从服务器传输文件,不幸的是,服务器无法识别 PORT 命令。我无法控制服务器(不详细知道服务器是什么),我必须使用主动模式。

这是命令行:

lftp -e 'debug 10;set ftp:passive-mode off; set ftp:auto-passive-mode no; ls; bye;' -u user,password ftp://ftp.site.com

这是调试输出:

<--- 200 Using default language en_US
---> OPTS UTF8 ON
<--- 200 UTF8 set to on
---> OPTS MLST modify;perm;size;type;UNIX.group;UNIX.mode;UNIX.owner;
<--- 200 OPTS MLST modify;perm;size;type;UNIX.group;UNIX.mode;UNIX.owner;
---> USER xxxxx
<--- 331 Password required for xxxxx
---> PASS xxxxxx
<--- 230 User xxxxx logged in
---> PBSZ 0
<--- 200 PBSZ 0 successful
---> PROT P
<--- 200 Protection set to Private
---> PORT 172,16,133,11,146,168
<--- 500 Illegal PORT command
---> LIST
---> ABOR
---- Closing aborted data socket
---- Chiusura del socket di controllo

LFTP 似乎放弃连接到数据套接字,因为远程服务器不支持 PORT 命令。有没有办法让 LFTP 仍然可以连接到端口 20?通过FTP手动显然没问题。

最佳答案

我认为,问题不在于 FTP 服务器不支持 PORT 命令(它确实支持),而是它不喜欢您的 FTP 所使用的 IP 地址/端口客户端正在发送 PORT 命令。

PORT 172,16,133,11,146,168

...告诉服务器连接到地址 172.16.133.11、端口 37544*。这里有趣的部分是 IP 地址:它是一个 RFC 1918 地址(它是 private network address )。这反过来表明您的 FTP 客户端位于 LAN 中的某个位置,并且使用公共(public) IP 地址连接到 FTP 服务器。

该远程 FTP 服务器无法连接到专用网络地址;根据定义,RFC 1918 地址不可公开路由。

因此,FTP 服务器很可能尝试连接到 PORT 命令中给出的地址/端口,但失败了,这就是 FTP 服务器使命令失败的原因,说:

500 Illegal PORT command

要使 PORT 命令与该 FTP 服务器配合使用,您需要发现该服务器可以连接的公共(public) IP 地址,以到达您的客户端计算机。假设这个地址是1.2.3.4。然后,您需要使用 ftp:port-ipv4 选项告诉 lftp 在其 PORT 命令中使用该地址。

但是,公共(public) IP 地址很可能是 NAT/路由器/防火墙的地址,并且该 NAT/路由器/防火墙将不允许从外部世界到高端网络的连接。编号端口(例如 37544),路由到 LAN 内的计算机。这是主动 FTP 数据传输的问题之一,使用PORT(或EPRT)的FTP 数据传输>) 命令:它们不被视为“防火墙友好”。

希望这有帮助!

<小时/>

* - 为什么 146,168 转换为端口 37544?

根据FTP的RFC959这些参数是:

(...) 16-bit TCP port address. This address information is broken into8-bit fields and the value of each field is transmitted as a decimalnumber (in character string representation).

146 dec = 10010010 bin = A
168 dec = 10101000 bin = B

A B
10010010 10101000 bin = 37544 dec

关于ftp - LFTP 主动模式,服务器无法识别 PORT 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15022629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com