sftp

sFTP en AWS EC2 en 5 minutos

En algún momento te puedes encontrar con la necesidad de levantar un sFTP para que alguien te envíe ficheros. Yo lo he necesitado hace poco y lo he solucionado rápidamente con una instancia de AWS EC2. Te dejo paso a paso lo que tienes que hacer por si lo necesitas.

Parto de la base de que tienes una cuenta en AWS y de que sabes levantar una instancia de ubuntu, si no es así hazmelo saber en los comentarios y preparo un tutorial de toda esta parte.

Puesto que no necesito gran rendimiento, he escogido una instancia de tipo t2.nano (CPU a 2.5Ghz, 512MB de RAM y 12GB de SSD) con un coste aproximado de 6$ al mes (suponiendo que esté encendida 24×7).

Los pasos son sencillos, sólo tienes que hacer lo siguiente:

1) Crear usuario y estructura de carpetas:

# Creo el usuario
adduser --shell=/bin/false user_name

# Creo la carpeta que será su raiz (para hacer chroot sobre ella)
mkdir /home/user_name/ftp_folder

Puesto que en /home/user_name estarán ficheros de configuración y demás, creamos un nivel más (ftp_folder) sobre el que luego enjaularemos al usuario con chroot.

2) Asignar los permisos:

# Asignamos propietario
chown -R root:user_name /home/user_name

# Asignamos permisos
chmod -R 750 /home/user_name

El dueño debe ser siempre root (o el sftp no arrancará), el grupo es el que tenga el usuario al que damos permiso.

3) Generamos las claves de acceso:

# Generamos las claves pública y privada
ssh-keygen -t rsa -f user_name

# Guardamos la clave pública
mkdir /etc/ssh/authorized_keys
cat user_name.pub > /etc/ssh/authorized_keys/user_name

# Generamos la clave de host por si no existe
ssh-keygen -A

Para que el acceso sea mediante certificado, generamos los pares de claves que el servicio ssh leerá. Tiene que estar fuera de la home del user o no podremos acceder.

4) Configuramos el acceso sftp:

# Editamos el fichero de configuración del servicio ssh
vi /etc/ssh/sshd_config

# Buscamos y comentamos la siguiente línea:
Subsystem sftp /usr/lib/openssh/sftp-server

# Configuramos el tipo de acceso de cada usuario
Subsystem sftp internal-sftp
Match User user_name
 AuthorizedKeysFile /etc/ssh/authorized_keys/%u
 ChrootDirectory /home/%u/ftp_folder
 ForceCommand internal-sftp
 X11Forwarding no
 AllowTCPForwarding no

Y sólo nos falta reiniciar el servicio ssh para que cargue los datos de configuración que hemos seteado:

service ssh restart

Y poco más, ya tenemos el sFTP funcionando y listo para que el user_name se conecte. No debes olvidar configurar correctamente el grupo de seguridad (firewall) para indicar quién puede o no conectarse a esta máquina.

Sencillo, no? Quien no tiene un sFTP es porque no quiere :D.

Saludos!!

Cristóbal Espinosa
Últimas entradas de Cristóbal Espinosa (ver todo)
3 comentarios
  1. abap on cloud course content
    abap on cloud course content Dice:

    Just want to say your article is as surprising. The clarity on your post is just spectacular
    and i can think you’re an expert on this subject.
    Fine with your permission let me to clutch your RSS feed to keep up to date
    with approaching post. Thank you 1,000,000 and please keep up the gratifying work.

    Responder

Trackbacks y pingbacks

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *