Jaminto hizo un gran trabajo respondiendo la pregunta, pero recientemente realicé el proceso yo mismo y quería ampliar la respuesta de Jaminto.
Supongo que ya tiene una instancia EC2 creada y le ha asociado una dirección IP elástica.
Paso # 1: Instale vsftpd
SSH a su servidor EC2. Tipo:
> sudo yum install vsftpd
Esto debería instalar vsftpd.
Paso # 2: abra los puertos FTP en su instancia EC2
A continuación, deberá abrir los puertos FTP en su servidor EC2. Inicie sesión en la consola de administración de AWS EC2 y seleccione Grupos de seguridad en el árbol de navegación de la izquierda. Seleccione el grupo de seguridad asignado a su instancia EC2. Luego seleccione la pestaña Entrante, luego haga clic en Editar:
Agregue dos Reglas TCP personalizadas con rangos de puertos 20-21 y 1024-1048. Para Source, puede seleccionar 'Anywhere'. Si decide configurar la Fuente en su propia dirección IP, tenga en cuenta que su dirección IP podría cambiar si se asigna a través de DHCP.
Paso # 3: Actualiza el archivo vsftpd.conf
Edite su archivo de configuración vsftpd escribiendo:
> sudo vi /etc/vsftpd/vsftpd.conf
Deshabilite FTP anónimo cambiando esta línea:
anonymous_enable=YES
a
anonymous_enable=NO
Luego agregue las siguientes líneas al final del archivo vsftpd.conf:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>
Su archivo vsftpd.conf debería tener un aspecto similar al siguiente, excepto que asegúrese de reemplazar pasv_address con su dirección IP pública:
Para guardar los cambios, presione escape, luego escriba :wq
, luego presione enter.
Paso # 4: reinicia vsftpd
Reinicie vsftpd escribiendo:
> sudo /etc/init.d/vsftpd restart
Debería ver un mensaje que se parece a:
Si esto no funciona, intente:
> sudo /sbin/service vsftpd restart
Paso 5: crea un usuario FTP
Si echa un vistazo a / etc / vsftpd / user_list, verá lo siguiente:
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
Esto básicamente dice: "No permita el acceso FTP a estos usuarios". vsftpd permitirá el acceso FTP a cualquier usuario que no esté en esta lista.
Por lo tanto, para crear una nueva cuenta FTP, es posible que deba crear un nuevo usuario en su servidor. (O, si ya tiene una cuenta de usuario que no figura en / etc / vsftpd / user_list, puede pasar al siguiente paso).
Crear un nuevo usuario en una instancia EC2 es bastante simple. Por ejemplo, para crear el usuario 'bret', escriba:
> sudo adduser bret
> sudo passwd bret
Así se verá:
Paso 6: restringir a los usuarios a sus directorios de inicio
En este punto, sus usuarios de FTP no están restringidos a sus directorios de inicio. Eso no es muy seguro, pero podemos solucionarlo con bastante facilidad.
Edite su archivo de configuración vsftpd nuevamente escribiendo:
> sudo vi /etc/vsftpd/vsftpd.conf
Descomente la línea:
chroot_local_user=YES
Debería verse así una vez que hayas terminado:
Reinicie el servidor vsftpd nuevamente así:
> sudo /etc/init.d/vsftpd restart
¡Todo listo!
Apéndice A: sobrevivir a un reinicio
vsftpd no se inicia automáticamente cuando se inicia el servidor. Si eres como yo, eso significa que después de reiniciar tu instancia EC2, sentirás un momento de terror cuando el FTP parece estar roto, ¡pero en realidad, simplemente no se está ejecutando! Aquí hay una forma práctica de arreglar eso:
> sudo chkconfig --level 345 vsftpd on
Alternativamente, si está utilizando redhat, otra forma de administrar sus servicios es mediante el uso de esta ingeniosa interfaz gráfica de usuario para controlar qué servicios deberían iniciarse automáticamente:
> sudo ntsysv
Ahora vsftpd se iniciará automáticamente cuando se inicie su servidor.
Apéndice B: Cambiar el directorio de inicio FTP de un usuario
* NOTA: Iman Sedighi ha publicado una solución más elegante para restringir el acceso de los usuarios a un directorio específico. Consulte su excelente solución publicada como respuesta *
Es posible que desee crear un usuario y restringir su acceso FTP a una carpeta específica, como / var / www. Para hacer esto, deberá cambiar el directorio de inicio predeterminado del usuario:
> sudo usermod -d /var/www/ username
En este ejemplo específico, es típico otorgar permisos de usuario al grupo 'www', que a menudo se asocia con la carpeta / var / www:
> sudo usermod -a -G www username