vsftpd-非法 PORT 命令

vsftpd-非法 PORT 命令

我在 VirtualBox 机器上使用 Ubuntu Server。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

我的 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

答案1

jackbenny 很接近了……

我在 AWS 上使用 Ubuntu 运行,下面是我为使 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

然后,您必须确保允许端口20,21,30000-30100通过。请记住,端口选择30000-30100完全是任意的,可以是任何您想要的。不过,我会坚持使用高于或超过的端口10000范围100

答案2

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

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

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

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

pasv_enable=Yes
pasv_min_port=<START_PORT>
pasv_max_port=<END_PORT>

相关内容