SFTP Linux · 6 min read · Sep 24, 2025

Cómo instalar y usar SFTP en servidores Linux

SFTP o Protocolo de Transferencia de Archivos SSH es un método para transferir datos de forma segura entre dos computadoras y más. Es FTP que se ejecuta sobre el protocolo SSH y aprovecha su seguridad, y admite completamente su autenticación.

Hoy en día, se recomienda usar SFTP en lugar de FTP o protocolo FTP/S heredado. SFTP es seguro por defecto porque así es como funciona SSH. Desde el punto de vista de la seguridad, SFTP también te protege contra el robo de contraseñas y ataques de intermediarios (MiTM).

Al igual que SSH, SFTP protege la integridad de los datos utilizando cifrado y funciones hash criptográficas. También admite múltiples métodos de autenticación segura, incluidos la autenticación por contraseña y basada en clave. Además, reduce el puerto abierto del servidor a la red externa porque se ejecuta en el mismo puerto que el protocolo SSH.

Requisitos previos

En esta guía, aprenderás cómo configurar un servidor SFTP en un sistema Linux. También aprenderás el comando básico del cliente sftp.

A continuación se muestra el entorno actual para la implementación:

  • Un servidor Linux: puedes usar Debian, Ubuntu, CentOS, Fedora, Rocky o cualquier otra distribución de Linux.
  • Asegúrate de que los paquetes OpenSSH estén disponibles en tu sistema Linux.
  • Cliente SFTP: comando de línea de comandos sftp o cualquier cliente GUI según prefieras.

Verificar paquetes OpenSSH

Para configurar un servidor SFTP, los paquetes OpenSSH deben estar instalados en tu sistema Linux. Casi todos los servidores de distribución de Linux tienen los paquetes OpenSSH instalados por defecto. Pero, en caso de que no tengas el paquete OpenSSH en tu sistema, puedes instalarlo desde el repositorio oficial.

  1. Para asegurarte de que los paquetes OpenSSH están instalados en tu sistema Linux, utiliza el siguiente comando.

Para servidores Debian o Ubuntu, puedes usar el comando dpkg a continuación.

dpkg -l | grep ssh

A continuación se muestra la salida de nuestro sistema Debian.

ii  libssh2-1:amd64               1.9.0-2                        amd64        Biblioteca del lado del cliente SSH2  
ii  openssh-client                1:8.4p1-5                      amd64        shell seguro (SSH) cliente, para acceso seguro a máquinas remotas  
ii  openssh-server                1:8.4p1-5                      amd64        servidor de shell seguro (SSH), para acceso seguro desde máquinas remotas  
ii  openssh-sftp-server           1:8.4p1-5                      amd64        módulo del servidor sftp de shell seguro (SSH), para acceso SFTP desde máquinas remotas

La primera columna ‘ ii ‘ significa que el paquete está instalado. El paquete ‘ openssh-sftp-server ‘ está instalado en el sistema Debian/Ubuntu.

Puedes usar el comando rpm a continuación para usuarios de RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux.

rpm -qa | grep ssh

Crear grupo y usuario

En este paso, crearás un nuevo grupo y usuario para el servidor SFTP. Los usuarios dentro de este grupo podrán acceder al servidor SFTP. Por razones de seguridad, los usuarios de SFTP no pueden acceder al servicio SSH; solo pueden acceder al servidor SFTP.

  1. Ejecuta el siguiente comando para crear un nuevo grupo ‘ sftpgroup ‘.
sudo groupadd sftpgroup
  1. Crea un nuevo usuario ‘ sftpuser ‘ utilizando el siguiente comando.
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Opciones detalladas:

  • -G: agrega automáticamente al usuario al ‘ sftpgroup ‘.
  • -d: especifica el directorio home para el nuevo usuario.
  • -s: establece el valor predeterminado para el nuevo usuario en ‘ /sbin/nologin ‘, lo que significa que el usuario no puede acceder al servidor SSH.
  1. A continuación, crea la contraseña para el usuario ‘ sftpuser ‘ utilizando el comando a continuación.
passwd sftpuser

Escribe tu contraseña fuerte y repítela, luego presiona ‘ Enter ‘ para confirmar.

Agregar usuario y grupo sftpserver

Para agregar más usuarios, repite las etapas número 2 y 3, y lo más importante, todos los usuarios de SFTP deben estar en el grupo ‘ sftpgroup ‘ sin acceso a la shell a través de SSH.

Configurar el directorio de cárcel Chroot

Después de crear un nuevo grupo y usuario, debes crear y configurar el directorio chroot para los usuarios SFTP.

  1. Para el usuario ‘sftpuser’, el nuevo directorio home estará en ‘/srv/sftpuser‘. Ejecuta el comando a continuación para crearlo.
mkdir -p /srv/sftpuser
  1. Para configurar chroot para el usuario ‘ sftpuser ‘, debes cambiar la propiedad del directorio al usuario root, pero mantener el grupo para leer y ejecutar sin acceso de escritura.

Cambia la propiedad del directorio al usuario ‘root’ utilizando el siguiente comando.

sudo chown root /srv/sftpuser

Dale al grupo permiso para leer y ejecutar, pero no para escribir.

sudo chmod g+rx /srv/sftpuser
  1. A continuación, crea un nuevo directorio ‘data’ dentro del directorio ‘ /srv/sftpuser ‘ y cambia la propiedad de ese directorio ‘ data ‘ al usuario ‘ sftpuser ‘.
mkdir -p /srv/sftpuser/data  
chown sftpuser:sftpuser /srv/sftpuser/data

configurar directorio de cárcel chroot para stpuser

Hasta ahora, a continuación se detallan la configuración del directorio del usuario SFTP.

  • El directorio ‘ /srv/sftuser ‘ es el directorio home predeterminado.
  • El usuario ‘ sftpuserno puede escribir en el directorio ‘ /srv/sftpuser ‘, pero puede leer dentro de ese directorio.
  • El usuario ‘ sftpuser ‘ puede subir archivos al servidor SFTP en el directorio ‘ /srv/sftpuser/data ‘.

Habilitar SFTP en el servidor SSH

Para habilitar el servidor SFTP en OpenSSH, debes editar la configuración de SSH ‘/etc/ssh/sshd_config’.

  1. Edita la configuración de ssh ‘ /etc/ssh/sshd_config ‘ usando nano o vim.
sudo nano /etc/ssh/sshd_config
  1. Comenta la siguiente configuración para deshabilitar la función independiente ‘ sftp-server ‘.
#Subsystem      sftp    /usr/lib/openssh/sftp-server
  1. Pega la siguiente configuración al final de la línea.
Subsystem sftp internal-sftp  
  
Match Group sftpgroup  
     ChrootDirectory %h  
     X11Forwarding no  
     AllowTCPForwarding no  
     ForceCommand internal-sftp

Guarda la configuración y sal.

Configuración detallada:

  • En lugar de usar el subproceso ‘ sftp-server ‘, estamos usando el ‘ internal-sftp ‘.
  • El servidor SFTP habilitado para el grupo ‘ sftpgroup ‘.
  1. Para aplicar una nueva configuración, reinicia el servicio ssh utilizando el comando a continuación.
sudo systemctl restart sshd

El servidor SFTP está listo y accesible, y se está ejecutando en el mismo puerto que el servicio SSH.

Acceder al servidor SFTP

En el lado del cliente, utilizaremos la línea de comandos sftp, que está instalada por defecto en la mayoría de las distribuciones de Linux. Pero, también puedes usar otro cliente de línea de comandos o cliente FTP GUI como FileZilla, Cyberduck, etc.

  1. Para conectarte al servidor SFTP, ejecuta el comando sftp como a continuación.
sftp ftpuser@SERVER-IP

Si tu servidor SFTP y/o SSH se ejecuta en el puerto personalizado, puedes usar el comando sftp como a continuación.

sftp -P PORT ftpuser@SERVER-IP

Escribe la contraseña para el ‘ sftpuser ‘.

  1. Una vez que estés conectado al servidor SFTP, ejecuta el siguiente comando.

Muestra el directorio de trabajo actual y lista todos los archivos y directorios disponibles.

pwd  
ls

Conectar a sftpserver con comando sftp

  1. Sube un archivo local al servidor SFTP en el directorio ‘/ ‘, lo que resultará en ‘ permiso denegado ‘, porque es el directorio chroot.
put /path/to/file/on/local /
  1. Sube un archivo local al directorio ‘ /data/ ‘ en el servidor SFTP. Si tu configuración es correcta, tu archivo se subirá al directorio ‘ /data/ ‘.
put /path/to/file1/on/local1 /data/  
put /path/to/file2/on/local /data/

Verificar lectura y escritura en sftpserver

  1. Ahora verifica los archivos disponibles en el directorio ‘ /data ‘ utilizando el siguiente comando.
ls /data/

Y verás tu archivo subido al servidor SFTP.

Conclusión

¡Felicidades! Has configurado con éxito el servidor SFTP en el sistema Linux. Este tipo de configuración se puede aplicar en la mayoría de los sistemas Linux con OpenSSH instalado sobre él. Además, has aprendido cómo configurar el directorio chroot para los usuarios SFTP y aprendiste el comando básico del cliente sftp.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.