Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm trying to use Filezilla on Windows to connect to a linux ec2 instance running vsftpd 2.3.5 (have also tried 2.3.2 with identical results) but the server keeps responding with 500 OOPS: vsf_sysutil_bind and then a secondary error that differs depending on whether I'm using active or passive mode (see logs below).

This setup was working fine a couple days ago. As far as I can discern, nothing has changed in the server's configuration but now you get thrown out immediately after connecting. I've restarted vsftpd but haven't yet restarted the server itself. What could cause this behavior, why would it crop up suddenly, and how can I fix it?

If I use active mode, the client-side log is as follows:

...
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

If I connect with passive mode, the client-side log is a little different:

....
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

Either way, the vsftpd log just says:

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"

My vsftpd.conf is:

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
share|improve this question
add comment

2 Answers

up vote 2 down vote accepted

I ended up getting rid of vsftpd and switching to proftd which is working fine in active and passive mode without any changes to the server's firewall settings. I'm still not sure what was causing the issue but if it's happening to you, a change in FTP server software might be the answer.

share|improve this answer
add comment

This looks like a firewall issue.Could you double check that nothing else runs on ports 20/21 and passive ports are allowed through?

share|improve this answer
    
netstat -ntlp shows vsftpd listening on port 21 and nothing running on 20. If I stop vsftpd, I can use netcat to create connections with a remote server on ports 20, 21, and 12000-12100 (checked a handful of that range). I wouldn't be able to do that if it was a firewall issue, right? –  ZorroDeLaArena Dec 28 '11 at 14:14
    
does this problem persist if you connect from the localhost?how about using windows command line client? –  Sergei Dec 28 '11 at 14:36
    
Yes, the problem happens connecting from localhost or from another linux server's ftp client. I can connect and log in and send a few other commands but as soon as I try to use LIST, GET or PUT, it returns "500 OOPS: vsf_sysutil_bind" and the next command returns "500 OOPS: priv_sock_get_cmd" and "421 Service not available, remote server has closed connection" –  ZorroDeLaArena Dec 28 '11 at 14:48
    
can you check if connect_from_port_20=no (default setting) changes anything?is selinux in permissive mode? –  Sergei Dec 28 '11 at 14:52
    
I changed connect_from_port_20 to YES, restarted, and now I can connect using passive mode. I changed it back to NO, restarted, and I can still connect using passive, where I couldn't before. Progress, somehow! Active mode still throws the same errors with either setting though. I can settle for recommending passive if I have to but I'd really like to get active working as well. The people using this FTP aren't technical and explaining how to force a connection type isn't fun. And I'm still not sure why it started working or if it'll stop again. I don't appear to have selinux at all. –  ZorroDeLaArena Dec 28 '11 at 15:13
show 1 more comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.