vsftpd 错误:500 OOPS:vsf_sysutil_bind

vsftpd 错误:500 OOPS:vsf_sysutil_bind

我正在尝试在 Windows 上使用 Filezilla 连接到运行 vsftpd 2.3.5 的 Linux ec2 实例(也尝试过 2.3.2,结果相同),但服务器一直响应 500 OOPS:vsf_sysutil_bind,然后出现第二个错误,该错误根据我使用主动模式还是被动模式而有所不同(请参阅下面的日志)。

几天前,这个设置运行良好。据我所知,服务器配置没有任何变化,但现在连接后会立即被抛出。我已重新启动 vsftpd,但尚未重新启动服务器本身。什么可能导致此行为,为什么它会突然出现,我该如何修复它?

如果我使用主动模式,客户端日志如下:

...
Response:   230 Login successful.
Command:    OPTS UTF8 ON
Response:   200 Always in UTF8 mode.
Status: Connected
Status: Retrieving directory listing...
Command:    PWD
Response:   257 "/"
Command:    TYPE I
Response:   200 Switching to Binary mode.
Command:    PORT 192,168,1,101,250,178
Response:   200 PORT command successful. Consider using PASV.
Command:    LIST
Response:   500 OOPS: vsf_sysutil_bind
Error:  Failed to retrieve directory listing
Response:   500 OOPS: priv_sock_get_cmd
Error:  Connection closed by server

如果我以被动模式连接,客户端日志会有些不同:

....
Response:   230 Login successful.
Command:    SYST
Response:   215 UNIX Type: L8
Command:    FEAT
Response:   211-Features:
Response:    EPRT
Response:    EPSV
Response:    MDTM
Response:    PASV
Response:    REST STREAM
Response:    SIZE
Response:    TVFS
Response:    UTF8
Response:   211 End
Command:    OPTS UTF8 ON
Response:   200 Always in UTF8 mode.
Status: Connected
Status: Retrieving directory listing...
Command:    PWD
Response:   257 "/"
Command:    TYPE I
Response:   200 Switching to Binary mode.
Command:    PASV
Response:   500 OOPS: vsf_sysutil_bind
Command:    PORT 192,168,1,101,249,253
Response:   500 OOPS: priv_sock_get_int
Error:  Failed to retrieve directory listing
Error:  Connection closed by server

无论哪种方式,vsftpd 日志都只显示:

Tue Dec 27 23:32:18 2011 [pid 19875] CONNECT: Client "XXX.XXX.XXX.XXX"
Tue Dec 27 23:32:18 2011 [pid 19874] [username] OK LOGIN: Client "XXX.XXX.XXX.XXX"

我的 vsftpd.conf 是:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=900
ftpd_banner=Welcome to FTP
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=12000
pasv_max_port=12100
pasv_address=XXX.XXX.XXX.XXX
port_enable=YES
port_promiscuous=YES
user_config_dir=/etc/vsftpd/users

答案1

过去几天,我一直在为这个问题而烦恼,起初我按照安装 proftpd 的路线走。但结果并不如我所愿,所以我尝试了 pure-ftpd,失败后我又回到了 vsftpd,解决这个问题的方法是增加被动端口的数量,我之前只允许 10090:10100 范围,也就是只有 10 个端口。

从那时起,我允许 vsftpd 使用更大范围的端口,这解决了我的问题,当我一次上传包含 10 个文件的长文件列表时,我不再收到该错误。

希望它能帮助下次遇到此问题的人。

答案2

我最终摆脱了 vsftpd 并转而使用利润表在主动和被动模式下运行良好,无需更改服务器的防火墙设置。我仍然不确定是什么导致了这个问题,但如果它发生在你身上,改变 FTP 服务器软件可能是答案。

答案3

从 vsftpd 配置中删除“port_promiscous”行并重新启动 vsftpd 解决了我的问题。

答案4

这看起来像是防火墙问题。您能否仔细检查一下端口 20/21 上是否没有其他程序运行,并且允许被动端口通过?

相关内容