vsftpd - 非法 PORT 命令

Ken*_*nny 3 virtualbox ftp vsftpd

我在 VirtualBox 机器上使用 Ubuntu 服务器。Apache 和 SSH 都可以工作,但是 FTP 成功连接到服务器并登录后,它发送错误消息:

 - Command: PORT 127,0,0,1,180,221 
 - Response: 500 Illegal PORT command.
 - Error: Failed to retrieve directory listing

Port Forwarding:
TCP | Host Port 2100 | Guest Port 21
Run Code Online (Sandbox Code Playgroud)

我的 vstpd.conf 文件:

listen=YES
pasv_enable=YES
pasv_min_port=2005
pasv_max_port=2010
port_enable=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=NO
ftpd_banner=Welcome.
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
Run Code Online (Sandbox Code Playgroud)

小智 6

杰克班尼很近...

我使用 Ubuntu 在 AWS 上运行,这是我为使 vsftpd 正确运行所做的工作:

seccomp_sandbox=NO
allow_writeable_chroot=YES
pasv_address=<(public ip) or (AWS public domain or DNS)>
pasv_enable=Yes
pasv_min_port=30000
pasv_max_port=30100
port_enable=YES
Run Code Online (Sandbox Code Playgroud)

然后,您必须确保允许端口20,21,30000-30100通过。请记住,端口选择30000-30100是完全任意的,可以是您想要的任何内容。虽然,我会坚持使用上面的端口10000以及一系列100或更多的端口。


jac*_*nny 5

从“外部”连接时是否收到该错误?在这种情况下,您可能需要将外部 IP 添加到 vsftpd,以便它知道在使用被动模式 FTP 时向其客户端发送哪个 IP。

尝试添加pasv_address=<YOUR_IP_HERE>到您的配置中。

您也可以尝试将 FTP 客户端切换到活动模式,看看是否仍然出现相同的错误。

您可能还需要为passiv FTP 设置端口范围并启用passiv 模式FTP。尝试添加这些行(将 START_PORT 和 END_PORT 替换为您想要的端口,并且不要忘记在路由器中转发它们):

pasv_enable=Yes
pasv_max_port=<START_PORT>
pasv_min_port=<END_PORT>
Run Code Online (Sandbox Code Playgroud)