# Cómo instalar un SFTP server en Ubuntu paso a paso

[Ubuntu](https://www.ionos.mx/digitalguide/servidores/know-how/ubuntu-un-sistema-para-todos-basado-en-linux/ "Ubuntu: un sistema para todos basado en Linux") es una plataforma segura y fiable para instalar un servidor SFTP. La distribución Linux ofrece **herramientas y paquetes integrados** que puedes utilizar para [SFTP](https://www.ionos.mx/digitalguide/servidores/know-how/sftp-ssh-file-transfer-protocol/ "SFTP (SSH File Transfer Protocol)"). Te mostramos cómo instalar y configurar un SFTP server en Ubuntu para la transferencia cifrada de datos.

## Ubuntu SFTP server: requisitos del sistema

En la comparación [FTP vs. SFTP](https://www.ionos.mx/digitalguide/servidores/know-how/ftp-vs-sftp/), el protocolo SFTP es claramente la mejor opción. Basado en [FTP](https://www.ionos.mx/digitalguide/servidores/know-how/file-transfer-protocol/ "File Transfer Protocol"), SFTP utiliza procedimientos criptográficos para el cifrado de datos. Por ello, se requieren componentes adicionales como [Secure Shell (SSH)](https://www.ionos.mx/digitalguide/servidores/herramientas/protocolo-ssh/ "Secure Shell (SSH)") para su instalación. Para configurar un servidor SFTP en la versión actual **Ubuntu 22.04** se deben cumplir los siguientes requisitos del sistema:

- **Procesador (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 privilegios de root
- **Paquete de software**: OpenSSH
- **Conexión a Internet**: para descargar los paquetes y conectarse al servidor SFTP

Consejo Con un [servidor Secure FTP](https://www.ionos.mx/alojamiento/servidor-ftp "Servidor Secure FTP de IONOS") de IONOS tendrás acceso a un hosting seguro de archivos, incluyendo copias de seguridad periódicas y asistencia las 24 horas.

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

Para instalar un servidor FTP compatible con SFTP, primero debes comprobar si **OpenSSH** está instalado. Por defecto, los paquetes ya están disponibles en Ubuntu. Si no es el caso, puedes obtener los paquetes del repositorio oficial.

Abre la terminal en tu sistema Ubuntu y ejecuta los siguientes comandos:

### Paso 1. Comprueba que los paquetes OpenSSH están instalados

Utiliza esta entrada para listar todos los paquetes instalados, filtrando por `ssh`:

```bash
$ dpkg -l | grep ssh
```

En nuestro ejemplo, dará lugar a este resultado:

[![Imagen: Terminal: paquetes OpenSSH instalados](https://www.ionos.mx/digitalguide/fileadmin/_processed_/3/1/csm_ubuntu-sftp-server-openssh-packets_8a708f0b96.webp "Terminal: paquetes OpenSSH instalados")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/ubuntu-sftp-server-openssh-packets.png) Terminal: paquetes OpenSSH instalados. Si aparece una `ii`, significa que los paquetes están instalados.

### Paso 2. Instala SSH

Si OpenSSH no está disponible, puedes instalarlo con el gestor de paquetes **APT**:

```bash
$ sudo apt install ssh
```

### Paso 3. Cambia la configuración SSHD

Tras la instalación, hay que adaptar el archivo de configuración del SSH daemon. Puedes abrirlo con el editor nano, por ejemplo:

```bash
$ sudo nano /etc/ssh/sshd_config
```

A continuación, introduce las siguientes líneas:

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

Esto permite a los usuarios del grupo SFTP acceder a su directorio personal a través de SFTP.

### Paso 4. Reinicia el servicio SSH

Después de cambiar el archivo de configuración, se debe reiniciar el servicio SSH:

```bash
$ sudo systemctl restart sshd
```

### 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.

```bash
$ sudo groupadd sftpgroup
```

El nuevo usuario se asigna al grupo SFTP con la opción `-G`. La opción `-d` determina el directorio de inicio y `-s` regula el acceso al Shell.

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

### Paso 6. Crea una contraseña de usuario SFTP

Introduce una contraseña segura para el usuario SFTP con el comando `passwd`:

```bash
$ passwd sftpuser
```

### Paso 7. Configura chroot

La creación de un directorio chroot crea una sandbox para los procesos en ejecución. En primer lugar, se debe crear una nueva carpeta:

```bash
$ mkdir -p /srv/sftpuser
```

A continuación, se asigna la propiedad al usuario root con `chown`:

```bash
$ sudo chown root /srv/sftpuser
```

Asigna derechos de lectura y ejecución al grupo:

```bash
$ sudo chmod g+rx /srv/sftpuser
```

A continuación, crea un subdirectorio y designa a `sftpuser` como propietario:

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

Esto permite al usuario SFTP subir archivos al subdirectorio **data**, pero solo tiene derechos limitados en el directorio 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 establecerse 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.

```bash
$ sftp sftpuser@SERVER-IP
```

Si se utiliza un puerto personalizado, se puede especificar de la siguiente manera:

```bash
$ sftp -P PORT ftpuser@SERVER-IP
```

A continuación, se te pedirá que introduzcas la contraseña del usuario SFTP.

### Paso 9. Carga archivos en el SFTP server

Los archivos se cargan en SFTP mediante el comando `put`.

Intenta transferir un archivo al directorio «/»:

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

El comando debería fallar porque es el directorio chroot para el que el usuario SFTP no tiene permiso de escritura.

Ahora prueba con la carpeta “data”:

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

### 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`:

```bash
ls /data/
```

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

[![Imagen: Terminal: lista de archivos en el SFTP server](https://www.ionos.mx/digitalguide/fileadmin/_processed_/a/8/csm_ubuntu-sftp-server-file-list_c2cbba90f3.webp "Terminal: lista de archivos en el SFTP server")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/ubuntu-sftp-server-file-list.png) Terminal: lista de archivos en el SFTP server.  Consejo Te mostramos también cómo [instalar un SFTP server en Windows](https://www.ionos.mx/digitalguide/servidores/configuracion/instalar-windows-sftp-server/).


This is a markdown version of: [https://www.ionos.mx/digitalguide/servidores/configuracion/instalar-un-sftp-server-en-ubuntu/](https://www.ionos.mx/digitalguide/servidores/configuracion/instalar-un-sftp-server-en-ubuntu/) for AI/LLM consumption.