Note: I had a brand new server and needed to run
sudo apt-get dist-upgrade before installing the server to get all packages up to date. These steps don't take into account best practice security considerations. These are merely basic steps to get an FTP server up and running quickly.
Install the server.
sudo apt-get install vsftpd
Let's check to make sure the server is up and running before making any changes.
sudo netstat -a | grep ftp
If you see this after running the netstat command then life is good. If not, you'll need to troubleshoot why the server is not starting.
tcp 0 0 *:ftp *:* LISTEN
Make a backup copy of the config file just in case
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
Add the following to the end of the /etc/vsftpd.conf file
pasv_enable=YES pasv_min_port=13000 pasv_max_port=13100 port_enable=YES pasv_address=[public dns from the amazon EC2 instance] pasv_addr_resolve=YES
Now time to edit a couple other variables in the config file. The first one is write_enable which defaults to NO. Change this to YES so that you can upload files to the server. If you don't do this and try to upload something (i.e. from FileZilla) you will likely see an error message like, "Error: Critical file transfer error"
# Uncomment this to enable any form of FTP write command.
And if you want local users the ability to login, uncomment the local_enable line
# Uncomment this to allow local users to log in.
Save the file and restart the server.
sudo service vsftpd restart
Should see something like this
vsftpd start/running, process 1649
You will need to open up ports both on your server instance and via the Amazon security group to be able to connect. In this example:
TCP Ports 13000 - 13100
TCP Ports 20 - 21