为什么运行命令后我会被踢出 FTP 会话?

为什么运行命令后我会被踢出 FTP 会话?

为什么运行命令后我会被踢出 FTP 会话?看来,一旦我成功登录到服务器,运行“ls”等命令后就会得到以下内容(我已将错误部分包含在“[ERROR]”标签中):

allen92@allen92-VirtualBox:~/Videos$ ftp -n ftp.FreeBSD.org
Connected to ftp.FreeBSD.org.
220 beastie.tdk.net FTP server (Version 6.00LS) ready.
ftp> user
(username) anonymous
331 Guest login ok, send your email address as password.
Password: 
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
[ERROR]
421 Service not available, remote server has closed connection
[ERROR]
ftp> 

这似乎发生在任何远程 FTP 服务器上。当我登录到本地计算机并运行 FTP 命令时,一切正常。如果实际上“421”错误是一般错误,有什么方法可以找出问题的根源吗?任何有关这方面的线索将不胜感激。我在这方面找不到任何支持特别的问题。有类似问题的人请分享您的想法。

注意:我有VSFTPD安装。

答案1

您和显示该症状的服务器之间很可能存在 NAT 防火墙。 (NAT 防火墙将整个网络隐藏在单个 IP 号码后面)。

问题是 ftp 希望以新的方式发送命令产生的数据,分离TCP/IP 连接和无法通过防火墙,因为它需要从服务器传输到您,而您隐藏在防火墙后面,防火墙不知道数据是针对您的计算机的。设计 FTP 协议时,许多现代设备(例如 NAT 路由器)(当设备数量多于可用 IP 地址时,NAT 路由器就变得很有必要)尚未发明。

使用该pasv命令(在您的客户端中可能有不同的名称)更改为被动连接,其中数据连接从您到服务器。

http://slacksite.com/other/ftp.html以获得更详细的解释。

答案2

在 /etc/vsftpd.conf 中添加或启用此行

seccomp_sandbox=否

相关内容