Ubuntu es una pla­ta­fo­r­ma segura y fiable para instalar un servidor SFTP. La di­s­tri­bu­ción Linux ofrece he­rra­mie­n­tas y paquetes in­te­gra­dos que puedes utilizar para SFTP. Te mostramos cómo instalar y co­n­fi­gu­rar un SFTP server en Ubuntu para la tra­n­s­fe­re­n­cia cifrada de datos.

Ubuntu SFTP server: re­qui­si­tos del sistema

En la co­m­pa­ra­ción FTP vs. SFTP, el protocolo SFTP es cla­ra­me­n­te la mejor opción. Basado en FTP, SFTP utiliza pro­ce­di­mie­n­tos cri­p­to­grá­fi­cos para el cifrado de datos. Por ello, se requieren co­m­po­ne­n­tes adi­cio­na­les como Secure Shell (SSH) para su in­s­ta­la­ción. Para co­n­fi­gu­rar un servidor SFTP en la versión actual Ubuntu 22.04 se deben cumplir los si­guie­n­tes re­qui­si­tos del sistema:

  • Pro­ce­sa­dor (CPU): 2 GHz (Dual-Core)
  • Memoria RAM: 4 GB
  • Espacio en disco duro: en función del tamaño de los datos
  • Sistema operativo: Ubuntu, usuario con pri­vi­le­gios de root
  • Paquete de software: OpenSSH
  • Conexión a Internet: para descargar los paquetes y co­ne­c­tar­se al servidor SFTP
Consejo

Con un servidor Secure FTP de IONOS tendrás acceso a un hosting seguro de archivos, in­clu­ye­n­do copias de seguridad pe­rió­di­cas y asi­s­te­n­cia las 24 horas.

Guía paso a paso para instalar un SFTP server en Ubuntu

Para instalar un servidor FTP co­m­pa­ti­ble con SFTP, primero debes comprobar si OpenSSH está instalado. Por defecto, los paquetes ya están di­s­po­ni­bles en Ubuntu. Si no es el caso, puedes obtener los paquetes del re­po­si­to­rio oficial.

Abre la terminal en tu sistema Ubuntu y ejecuta los si­guie­n­tes comandos:

Paso 1. Comprueba que los paquetes OpenSSH están in­s­ta­la­dos

Utiliza esta entrada para listar todos los paquetes in­s­ta­la­dos, filtrando por ssh:

$ dpkg -l | grep ssh
bash

En nuestro ejemplo, dará lugar a este resultado:

Imagen: Terminal: paquetes OpenSSH instalados
Terminal: paquetes OpenSSH in­s­ta­la­dos.

Si aparece una ii, significa que los paquetes están in­s­ta­la­dos.

Paso 2. Instala SSH

Si OpenSSH no está di­s­po­ni­ble, puedes in­s­ta­lar­lo con el gestor de paquetes APT:

$ sudo apt install ssh
bash

Paso 3. Cambia la co­n­fi­gu­ra­ción SSHD

Tras la in­s­ta­la­ción, hay que adaptar el archivo de co­n­fi­gu­ra­ción del SSH daemon. Puedes abrirlo con el editor nano, por ejemplo:

$ sudo nano /etc/ssh/sshd_config
bash

A co­n­ti­nua­ción, introduce las si­guie­n­tes líneas:

Match Group sftpgroup
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
bash

Esto permite a los usuarios del grupo SFTP acceder a su di­re­c­to­rio personal a través de SFTP.

Se­r­vi­do­res dedicados
Re­n­di­mie­n­to e in­no­va­ción
  • Pro­ce­sa­do­res de última ge­ne­ra­ción
  • Hardware dedicado de alto re­n­di­mie­n­to
  • Centros de datos con ce­r­ti­fi­ca­ción ISO

Paso 4. Reinicia el servicio SSH

Después de cambiar el archivo de co­n­fi­gu­ra­ción, se debe reiniciar el servicio SSH:

$ sudo systemctl restart sshd
bash

Paso 5. Crea un usuario y grupo SFTP

En el siguiente paso creamos el grupo sftpgroup y el usuario sftpuser, que por razones de seguridad solo pueden acceder al SFTP server de Ubuntu y no al servicio SSH.

$ sudo groupadd sftpgroup
bash

El nuevo usuario se asigna al grupo SFTP con la opción -G. La opción -d determina el di­re­c­to­rio de inicio y -s regula el acceso al Shell.

$ sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser
bash

Paso 6. Crea una co­n­tra­se­ña de usuario SFTP

Introduce una co­n­tra­se­ña segura para el usuario SFTP con el comando passwd:

$ passwd sftpuser
bash

Paso 7. Configura chroot

La creación de un di­re­c­to­rio chroot crea una sandbox para los procesos en ejecución. En primer lugar, se debe crear una nueva carpeta:

$ mkdir -p /srv/sftpuser
bash

A co­n­ti­nua­ción, se asigna la propiedad al usuario root con chown:

$ sudo chown root /srv/sftpuser
bash

Asigna derechos de lectura y ejecución al grupo:

$ sudo chmod g+rx /srv/sftpuser
bash

A co­n­ti­nua­ción, crea un su­b­di­re­c­to­rio y designa a sftpuser como pro­pie­ta­rio:

$ mkdir -p /srv/sftpuser/data
$ chown sftpuser:sftpuser /srv/sftpuser/data
bash

Esto permite al usuario SFTP subir archivos al su­b­di­re­c­to­rio data, pero solo tiene derechos limitados en el di­re­c­to­rio sftpuser. Tendrá derechos de lectura, pero por razones de seguridad no tendrá derechos de escritura.

Paso 8. Conéctate al Ubuntu SFTP server

La conexión con el servidor SFTP puede es­ta­ble­ce­r­se a través de la línea de comandos SFTP o a través de un cliente FTP con GUI. En la terminal, introduce el comando sftp seguido del nombre de usuario y el nombre de host o la dirección IP del servidor SFTP.

$ sftp sftpuser@SERVER-IP
bash

Si se utiliza un puerto pe­r­so­na­li­za­do, se puede es­pe­ci­fi­car de la siguiente manera:

$ sftp -P PORT ftpuser@SERVER-IP
bash

A co­n­ti­nua­ción, se te pedirá que in­tro­du­z­cas la co­n­tra­se­ña del usuario SFTP.

Paso 9. Carga archivos en el SFTP server

Los archivos se cargan en SFTP mediante el comando put.

Intenta tra­n­s­fe­rir un archivo al di­re­c­to­rio «/»:

put /path/to/file/on/local /
bash

El comando debería fallar porque es el di­re­c­to­rio chroot para el que el usuario SFTP no tiene permiso de escritura.

Ahora prueba con la carpeta “data”:

put /path/to/file1/on/local1 /data/
bash

Paso 10. Abre los archivos en el SFTP server de Ubuntu

Puedes listar archivos en la línea de comandos SFTP con el comando ls:

ls /data/
bash

Aquí puedes ver qué archivos hay en el servidor SFTP:

Imagen: Terminal: lista de archivos en el SFTP server
Terminal: lista de archivos en el SFTP server.
Consejo

Te mostramos también cómo instalar un SFTP server en Windows.

Ir al menú principal