ftp> 中的 ls 命令不起作用!

Rav*_*avi 21 pure-ftpd vsftpd

我正在练习 ftp 但遇到了一个问题: ls 命令在 ftp> 上不起作用。为什么?我检查了 2 个远程服务器,但 ls 对任何一个服务器都不起作用,并且在执行 ls 时给出了不同的输出。请参阅下面的 2 个遥控盒。

下面显示了我今天安装 vsftpd 的远程服务器。

ravbholua@ravbholua-Aspire-5315:~$ ftp rs
Connected to ravi.com.
220 (vsFTPd 3.0.2)
Name (rs:ravbholua): 
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/ravbholua"
ftp> ls
500 Illegal PORT command.
ftp: bind: Address already in use
ftp> 
Run Code Online (Sandbox Code Playgroud)

以下是我必须发送一些文件的另一台远程机器。但是由于 ftp> 上的 ls 不起作用,我将如何将文件从本地盒子传输到该盒子,因为没有 ls 无法确认文件是否已传输。

ravbholua@ravbholua-Aspire-5315:~$ ftp 125.21.153.140
Connected to 125.21.153.140.
220---------- Welcome to Pure-FTPd [TLS] ----------
220-You are user number 1 of 10 allowed.
220-Local time is now 04:34. Server port: 21.
220-This server supports FXP transfers
220 You will be disconnected after 2 minutes of inactivity.
Name (125.21.153.140:ravbholua): peacenews
331 User peacenews OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200-FXP transfer: from 123.63.112.168 to 10.215.10.80
200 PORT command successful
Run Code Online (Sandbox Code Playgroud)

请注意,对于上述机器,一旦我在 ftp> 上运行 ls ,提示就没有回来。

在两台远程机器上,我在 ftp> 上执行 ls 时得到不同的输出

Gil*_*il' 29

FTP 是一种古老的协议。它依赖于两个TCP连接:一个控制连接在其上的命令被交换,和数据连接的文件的内容,并且还对诸如命令的输出ls。这里发生的是控制连接已建立,但数据连接没有通过。

默认情况下(主动模式),从发送方到接收方建立数据连接。对于 的输出ls,数据由服务器发送,因此服务器尝试打开与客户端的连接。这在 FTP 发明时效果很好,但现在,客户端通常位于防火墙或 NAT 后面,这些防火墙或 NAT 可能支持也可能不支持活动 FTP。切换到被动模式,客户端始终启动数据连接。

查看您的ftp命令手册以了解如何默认切换到被动模式。对于一次性的事情,键入命令passive通常可以解决问题。

您可能希望切换到更好的 FTP 客户端,例如ncftp或lftp。