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.
- 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 sshA 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 remotasLa 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 sshCrear 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.
- Ejecuta el siguiente comando para crear un nuevo grupo ‘ sftpgroup ‘.
sudo groupadd sftpgroup- Crea un nuevo usuario ‘ sftpuser ‘ utilizando el siguiente comando.
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuserOpciones 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.
- A continuación, crea la contraseña para el usuario ‘ sftpuser ‘ utilizando el comando a continuación.
passwd sftpuserEscribe tu contraseña fuerte y repítela, luego presiona ‘ Enter ‘ para confirmar.

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.
- Para el usuario ‘sftpuser’, el nuevo directorio home estará en ‘/srv/sftpuser‘. Ejecuta el comando a continuación para crearlo.
mkdir -p /srv/sftpuser- 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/sftpuserDale al grupo permiso para leer y ejecutar, pero no para escribir.
sudo chmod g+rx /srv/sftpuser- 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
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 ‘ sftpuser ‘ no 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’.
- Edita la configuración de ssh ‘ /etc/ssh/sshd_config ‘ usando nano o vim.
sudo nano /etc/ssh/sshd_config- Comenta la siguiente configuración para deshabilitar la función independiente ‘ sftp-server ‘.
#Subsystem sftp /usr/lib/openssh/sftp-server- 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-sftpGuarda 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 ‘.
- Para aplicar una nueva configuración, reinicia el servicio ssh utilizando el comando a continuación.
sudo systemctl restart sshdEl 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.
- Para conectarte al servidor SFTP, ejecuta el comando sftp como a continuación.
sftp ftpuser@SERVER-IPSi 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-IPEscribe la contraseña para el ‘ sftpuser ‘.
- 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
- 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 /- 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/
- 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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.