In your /etc/vsftpd.conf add:
pasv_min_port=10000 pasv_max_port=10024 pasv_address=18.104.22.168(Where 22.214.171.124 is your external public IP address.)
ec2-authorize default -p 20-21 ec2-authorize default -p 10000-10024and restart vsftpd.
What this does is configure vsftpd to use ports 10000-10024 for passive data transfers. Then ec2-authorize opens ports 20-21 and 10000-10024 for active and passive connections.
I was banging my head against the wall trying to figure out why my passive connections were hanging. I had everything in the config except pasv_address. When I added that, it started working perfectly.
You might also be interested in: