72

I can't get vsfptd working on Ubuntu 12.04.

my vsftpd.conf file looks like this, and I try to connect with a local user:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

Error message in FileZilla:

Response:   331 Please specify the password.
Command:    PASS ****
Response:   530 Login incorrect.
Florian
  • 822
  • 1
  • 6
  • 9

7 Answers7

132

Back up the config file before making a change;

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.back

and then edit vsftpd.conf (with vi or nano)

nano /etc/vsftpd.conf

Then make the following change

pam_service_name=ftp

Save your change and restart the ftp server (if you use nano hit CTRL+O & enter to save then CTRL+X to exit)

sudo service vsftpd restart

Source: VSFTPD configuration problems with 12.04

AzkerM
  • 10,270
  • 6
  • 32
  • 51
20

By default vsFTPd uses the file /etc/pam.d/vsftpd. This file by default requires FTP users to have a shell listed in /etc/shells and requires them not to be listed in /etc/ftpusers. If you check those 2 things your probably find what the problem is.

  • 1
    I think this should be the accept answer because it points out where is the problem. – PhoneixS Sep 26 '18 at 11:18
  • How does one make sure the FTP user has one of these shells? Asking for a friend... – Allen May 19 '20 at 00:32
  • 1
    @Allen This is defined in the file /etc/passwd. Each line is the info about one user. The fields are separated by a colon (:). The 7th field contains the path to the shell binary of the user. – Jeroen Vermeulen May 20 '20 at 07:56
  • 2
    Apart from editing the passwd file directly, you can use usermod -s /bin/bash YOUR_USERNAME – Raptor Oct 28 '20 at 09:41
9

I did not need to change the vsftpd.conf. Only needed to make sure that a shell was set in my /etc/passwd file, that also was lited in /etc/shells.

So basically after useradd without a shell I needed to make sure the home directory was created and that the user had /bin/bash as it's shell.

galoget
  • 2,963
Duncan
  • 91
  • 1
    Thanks that's what happened to me. The other solutions worked by removing all safety mechanisms, this one was actually solved the problem. – VinGarcia May 02 '18 at 00:56
5

I met this problem when I tried to login in with root and I just solved it.

vsftpd: version 3.0.2

Solution:

Check the following file (it contains list of users disallowed FTP access):

/etc/ftpusers 

ftpusers

In my case, I commented out root from the file, then it worked.

galoget
  • 2,963
3

Please make some changes in /etc/vsftpd.conf:

pam_service_name=ftp

If you want to set access by default /var/www directory for local user you can do that with below line:

local_root=/var/www

Now save and exit.

Restart vsftpd server using:

sudo service vsftpd restart
galoget
  • 2,963
2

The suggested resolution did not work for me. I gave up on the ftp user, and switched my attention to the ubuntu user. I made sure there was a password associated with the ubuntu user.

I made sure to enable passive mode, and set local_enable=YES in the vsftpd.conf file.

I was able to authenticate just fine using the ubuntu account. And I successfully uploaded a large file to my Amazon Ubuntu FTP server. Clearly there was something amiss with the ftp user.

Ron
  • 20,638
richardm
  • 21
  • 1
0

I used Ubuntu 18.04 and LetsEncrypt certificates for TLS encryption. What worked was changing the name of the pam_service_name=ftp the error I was getting in Filezilla was:

"GnuTLS error -15": An unexpected TLS packet was received.

Reference: FTPS set up in ubuntu 18.04

galoget
  • 2,963