Cómo crear un servidor habilitado para SFTP en AWS
AWS Transfer Family admite el Protocolo Seguro de Transferencia de Archivos (SFTP), el Protocolo de Transferencia de Archivos sobre SSL (FTPS) y el Protocolo de Transferencia de Archivos (FTP) para transferir archivos a y desde AWS S3 o AWS EFS(Elastic File System).Admite el enrutamiento DNS con Amazon Route 53. AWS Transfer Family elimina la sobrecarga de comprar y ejecutar tus propios servidores FTP, en su lugar, administra la infraestructura de archivos por ti. Admite capacidad de autoescalado y mantiene una alta disponibilidad.
AWS Transfer Family es un servicio totalmente administrado por AWS que escala en tiempo real, y no necesitas crear
Entendamos 3 protocolos diferentes soportados por AWS Transfer Family.
- Protocolo SFTP: Secure Shell File Transfer Protocol es un protocolo de red utilizado para la transferencia segura de datos a través de Internet. El protocolo admite la funcionalidad completa de seguridad y autenticación de SSH
- ProtocoloFTP: El Protocolo de Transferencia de Archivos (FTP) es un protocolo de red utilizado para la transferencia de datos. FTP utiliza un canal separado para las transferencias de control y de datos.
- ProtocoloFTPS: El Protocolo de Transferencia de Archivos sobre SSL es una extensión del FTP. Utiliza los protocolos criptográficos Transport Layer Security y Secure Sockets Layer para cifrar el tráfico.
Puedes crear un servidor de acceso público o crear un servidor en la VPC.
También puedes controlar el acceso al servidor utilizando las políticas de AWS Identity and Access Management (IAM), estas políticas pueden asignarse a un Rol IAM que luego se adjunta al usuario.
No hay costes iniciales y sólo tienes que pagar por lo que utilices y por los protocolos que hayas habilitado para acceder a tu punto final. Para conocer sus precios, visita la página oficial de AWS aquí.
En este artículo, veremos los pasos para crear un servidor habilitado para SFTP en AWS que será accesible públicamente. Antes de continuar con este artículo, se supone que estás familiarizado con los Roles IAM, las instancias EC2 y los Buckets S3.
Requisitos previos
- Cuenta AWS (Créala si no tienes una).
- Instancia Ubuntu EC2.
- Rol IAM con acceso completo a S3.
- Cubo S3.
¿Qué vamos a hacer?
- Iniciar sesión en AWS
- Crear un Servidor SFTP
- Modifica las Relaciones de Confianza de la Política IAM
- Crea una carpeta en el Bucket S3
- Generar un Rayo de Claves en la instancia EC2.
- Crea un usuario en el Servidor SFTP
- Prueba la conexión con el Servidor SFTP
- Elimina el Servidor SFTP
Iniciar sesión en AWS
Haz clic aquí para ir a la página de inicio de sesión donde puedes introducir tus credenciales para entrar en la cuenta.
Una vez que hayas accedido con éxito a tu cuenta, verás la consola principal de administración de AWS como se muestra a continuación y podrás elegir la región deseada para crear un Servidor SFTP.
Crear un Servidor SFTP
Busca «Transferir Familia» en el cuadro de búsqueda de la parte superior de la pantalla.
Verás el panel principal de la Familia de Transferencia de AWS como se indica a continuación. Haz clic en el botón «Crear servidor» para crear tu primer servidor SFTP.
Aquí, elige el protocolo que quieres habilitar para el servidor. Puedes habilitar varios protocolos, pero aquí procederemos con un único protocolo SFTP. Haz clic en el botón «Siguiente» para continuar.
Elige el tipo de endpoint en función de tus necesidades. Si quieres que tu endpoint sea accesible públicamente procede con ello. Pulsa el botón «Siguiente».
Elige el servicio de almacenamiento de AWS donde quieres que se almacenen tus datos. Aquí procederemos con Amazon S3. Pulsa el botón «Siguiente» para continuar.
Procede aquí con las opciones por defecto.
Revisa la configuración y haz clic en el botón «Crear servidor». Esto creará un servidor SFTP para ti, el proceso de creación tardará unos minutos en finalizar.
Modificar las Relaciones de Confianza de la Política IAM
El siguiente paso es modificar la política IAM que tiene acceso total a los buckets S3. Ve a «Rol IAM — > Relaciones de confianza» y edítala.
Cambia el Servicio a «transfer.amazonaws.com», el documento de la política debería tener el siguiente aspecto.
Crea una carpeta en el Bucket S3.
Mira si tienes un bucket S3 donde quieras almacenar los datos del servidor SFTP.
Genera un Rayo de Claves en la instancia EC2.
El siguiente paso es crear un par de claves que se utilizarán para autenticarse en el servidor SFTP. Ve a tu servidor Linux y ejecuta el siguiente comando para generar un par de claves
ssh-keygen
cat ~/.ssh/id_rsa.pub
Obtén la clave pública que necesitarás en el siguiente paso.
Crear un usuario en el Servidor SFTP
Vamos al SFTP que hemos creado.
Haz clic en el botón «Añadir usuario» para crear un usuario que se utilizará para autenticarse y transferir archivos a S3 utilizando el servidor SFTP que hemos creado.
Aquí, el endpoint que ves se utilizará para acceder al servidor SFTP para la transferencia de datos. Conserva contigo este endpoint que necesitarás para acceder al servidor SFTP.
Añade un nombre de usuario, elige el rol IAM, selecciona el bucket S3 y una carpeta dentro de él que actuará como directorio principal para el usuario que estamos creando. Añade la clave pública que hemos copiado en el paso anterior en la parte «Clave pública SSH».
Desplázate hacia abajo en la página y haz clic en el botón «Añadir». Esto creará un usuario que necesitará una clave privada asociada a la pública que añadimos al crear el usuario.
Prueba la conexión con el Servidor SFTPPrueba la conexión con el Servidor SFTP
Ve al servidor Linux donde creaste el par de claves y utiliza el siguiente comando para conectarte al servidor SFTP.
Aquí, tienes que cambiar el endpoint por el que tengas para tu servidor SFTP.
sftp -i ~/.ssh/id_rsa rahul-sftp-user@s-922b406852024d85a.server.transfer.eu-west-3.amazonaws.com
Puedes intentar subir archivos utilizando el siguiente comando, donde el archivo utilizado en el siguiente comando pertenece al sistema local.
put /home/ubuntu/test-archivo
El comando anterior copiará el archivo «/home/ubuntu/test-file» del sistema local al servidor SFTP.
Puedes verificar desde la consola si el archivo se ha subido o no al cubo S3 utilizando el comando «put» anterior.
Eliminar el servidor SFTP
Cuando ya no necesites tu servidor SFTP, puedes eliminarlo fácilmente. Para eliminar el servidor, haz clic en «Acciones –> Eliminar».
Confirma tu acción de eliminación y haz clic en el botón «Eliminar». Una vez que elimines el servidor SFTP no podrás restaurarlo, así que ten cuidado al realizar la operación de eliminación.
Conclusión
En este artículo hemos visto los pasos para crear un servidor SFTP con S3 como backend. Creamos un usuario y le asignamos un determinado bucket –> carpeta de S3 como directorio de Inicio. Vimos los cambios necesarios para que el rol IAM sea utilizado por el usuario.