为什么我一旦运行命令就被踢出FTP会话?


12

为什么我一旦运行命令就被踢出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

Answers:


13

您和服务器之间最有可能出现此症状的NAT防火墙。(NAT防火墙将整个网络隐藏在一个IP地址后面)。

问题是,FTP想要发送的命令在一个新的,产生的数据独立的TCP / IP连接,是因为它需要从服务器去你不能通过防火墙,而你是隐藏其中有防火墙后面没有任何线索表明数据适合您的计算机。当设计FTP协议时,尚未发明出许多现代设备,例如NAT路由器(当设备数量超过可用IP地址时,这是必需的)。

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

有关更多详细说明,请参见http://slacksite.com/other/ftp.html


非常感谢。对于VSFTPD,进入被动模式的命令是“被动”。这似乎暂时有效。我认为整个情况与我在虚拟机上运行Linux安装及其非标准设置有关。我将了解默认情况下如何启用“被动”模式。一旦找到答案,我就会张贴给有兴趣的任何人。
AllenD

虚拟机的默认网络是某种类型的NAT并不少见,因此不会暴露该计算机。对于VirtualBox,将其更改为Bridged使其像本地网络上的任何其他计算机一样显示。
托尔比约恩Ravn的安徒生

0

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

seccomp_sandbox =否


这个答案解决了我的问题,但是我仍然对此未记录的配置有疑问。
A1rPun

为什么seccomp_sandbox=NO在某些情况下正确的答案记录在/etc/vsftpd.conf文件中:```#seccomp_sanbox添加一个附加的安全层,限制了可以通过vsftpd执行的#系统调用的数量。但是,可能会发生#白名单不允许合法调用(通常由#第三方库(例如pam或openssl)间接触发),并且该进程已被内核杀死。##因此,如果您的服务器在常见情况下死机(文件下载,上传),#取消注释以下行,并且别忘了在#bugzilla.novell.com se 上打开错误
GSchukat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.