En la era digital actual, la transferencia segura de archivos entre sistemas es una necesidad primordial, tanto para usuarios individuales como para empresas. Protocolos como SFTP (Secure File Transfer Protocol) han surgido como soluciones robustas para garantizar que los datos sensibles viajen a través de redes sin ser interceptados o comprometidos. Este artículo desglosa qué es un servidor SFTP, sus ventajas inherentes sobre su predecesor FTP, sus múltiples aplicaciones prácticas y, fundamentalmente, cómo configurar su propio servidor SFTP para disfrutar de una gestión de archivos segura y controlada.
¿Qué es un Servidor SFTP?
Un servidor SFTP es un sistema que emplea el protocolo SFTP para establecer una conexión segura entre un cliente y el propio servidor. Su propósito principal es permitir la transferencia y modificación de archivos y carpetas de manera protegida. El protocolo SFTP logra esta seguridad a través de SSH (Secure Shell), que actúa como una capa de cifrado para toda la comunicación.
Es crucial no confundir un servidor SFTP con un servidor FTP. Aunque ambos comparten la utilidad de transferir archivos, el protocolo SFTP es completamente distinto e independiente del protocolo FTP. No existe relación alguna entre ellos. Para una comprensión más profunda del protocolo SFTP, se puede consultar documentación adicional que detalle sus especificaciones técnicas.

Ventajas de un Servidor SFTP frente a un Servidor FTP
Las dos ventajas principales que un servidor SFTP ofrece sobre un servidor FTP son la seguridad y la integridad de los datos.
En un servidor SFTP, el proceso de autenticación entre el cliente y el servidor se realiza mediante una capa de cifrado. Esto significa que los usuarios y contraseñas están protegidos contra accesos no autorizados y no pueden ser descubiertos fácilmente por terceros.
Además, en un servidor SFTP, la totalidad de la información y el tráfico que se transmite entre el cliente y el servidor está cifrado. Por lo tanto, un atacante no podrá interceptar ni modificar la información que se transmite, garantizando la confidencialidad e integridad de los datos.
En contraposición con un servidor FTP, un servidor SFTP es un medio excelente y seguro para la transferencia de datos, ya sea de forma local o remota.
Si bien es difícil encontrar inconvenientes significativos en SFTP, se podría señalar que algunas aplicaciones móviles o software más antiguos pueden no ser compatibles con este protocolo. Sin embargo, la creciente adopción de SSH, incluso en sistemas operativos como Windows 10, está expandiendo su compatibilidad y uso.
Usos que Podemos Dar a un Servidor SFTP
Los servidores SFTP se han convertido en una herramienta indispensable en diversos escenarios. Sus aplicaciones comunes incluyen:
- Solución Corporativa para Transferencia Segura de Archivos: Permite a las empresas transferir de forma segura archivos de gran tamaño a clientes, diseñadores gráficos, empleados y otros colaboradores. Esto es especialmente útil cuando se manejan documentos confidenciales o proyectos que requieren la colaboración de múltiples partes.
- Copia de Seguridad y Subida de Información a Servidores Web: Un servidor SFTP proporciona una vía segura para subir información y realizar copias de seguridad en un servidor web. Esto asegura que los datos críticos del sitio web estén protegidos y se puedan restaurar fácilmente en caso de necesidad.
- Creación de una Nube Personal Segura: Configurar un servidor SFTP puede servir como base para crear una nube personal. Esto permite a los usuarios acceder a su información almacenada desde cualquier lugar, sin depender de servicios de terceros que podrían comprometer la privacidad, como Google Drive, Dropbox o iCloud.

Características del Servidor SFTP que Vamos a Instalar y Configurar
El servidor SFTP que se detalla en esta guía poseerá las siguientes características clave:
- Accesibilidad Local y Remota: El servidor será accesible tanto desde la red local como desde ubicaciones externas, lo que maximiza su utilidad.
- Seguridad Mediante "Jaula" (Chroot Jail): Por razones de seguridad, el servidor estará configurado con un sistema de "jaula" (chroot jail). Esto significa que los usuarios que accedan al servidor SFTP solo tendrán acceso a las carpetas específicas que se les asignen, impidiendo el acceso a otras partes del sistema.
- Control de Permisos Granular: Se implementará un control detallado sobre los permisos de los usuarios. Cada usuario podrá tener asignados permisos de lectura, escritura y ejecución según sea necesario.
- Autenticación por Usuario y Contraseña: El proceso de autenticación se basará en un sistema de nombre de usuario y contraseña. Opcionalmente, se podría implementar un sistema de autenticación de dos factores utilizando contraseñas y claves SSH para una seguridad adicional.
- Soporte para Múltiples Clientes: Aunque el ejemplo se centra en la configuración para dos clientes específicos, el sistema está diseñado para poder añadir tantos clientes como sean necesarios.
- Modificación de Permisos por Cliente: Con el uso de un cliente SFTP adecuado, los usuarios podrán modificar los permisos de los archivos que suban al servidor, siempre dentro de los límites establecidos.
¿Qué Necesitamos para Montar Nuestro Servidor SFTP?
Para seguir los pasos de este tutorial, se requiere una configuración mínima: un ordenador con un sistema operativo Linux que actuará como servidor. No se necesita hardware especializado ni software costoso.
Asegurar que el Servidor SFTP Tenga IP Local Fija
Es fundamental asegurar que el servidor SFTP disponga de una dirección IP interna fija dentro de la red local. Esto simplifica la gestión y garantiza que el servidor sea siempre localizable.
Si el servidor Linux cuenta con un entorno gráfico, la configuración de la IP fija se realizará a través de las interfaces visuales del gestor de red (como Network Manager o Wicd). El objetivo es asignar una dirección IP estática, por ejemplo, 192.168.1.188. Esta IP será la que se utilice para localizar y conectar con el servidor SFTP de forma local, y también la que se configurará en el router para redirigir las peticiones de los clientes SFTP remotos al servidor.
🟠 Cómo Configurar una IP ESTÁTICA en UBUNTU con NETPLAN 🌎
Hacer que Nuestro Servidor SFTP Esté Accesible desde el Exterior
Para permitir que clientes remotos se conecten a nuestro servidor SFTP, necesitarán conocer nuestra dirección IP pública. Dado que la mayoría de las conexiones a Internet utilizan direcciones IP dinámicas, que pueden cambiar con el tiempo, es necesario asociar nuestra IP pública a un nombre de dominio. Este proceso, conocido como Dynamic DNS (DDNS), permite que el dominio apunte siempre a la IP pública actual del servidor. Por ejemplo, se podría tener una configuración donde la IP pública esté asociada al dominio geekland.sytes.net.
Loguearse como Usuario Root
Todo el proceso de instalación y configuración del servidor se realizará con privilegios de superusuario (root). Por lo tanto, el primer paso es iniciar sesión como usuario root en la terminal ejecutando el comando:
su rootAl ejecutar este comando, se solicitará la contraseña del usuario root, la cual se debe introducir y presionar Enter.
Instalar el Servidor SFTP
El siguiente paso es asegurar que todos los paquetes necesarios estén instalados. Primero, se actualizan los repositorios del sistema operativo con el comando:
apt-get updateA continuación, se instalan los paquetes openssh-server y openssh-client. Estos paquetes proporcionan la funcionalidad necesaria para SSH y SFTP. Se ejecutan en la terminal con el siguiente comando:
apt-get install openssh-server openssh-clientEs posible que la mayoría de las distribuciones de Linux ya incluyan estos paquetes por defecto tras la instalación del sistema operativo. Si se utiliza un gestor de paquetes diferente a apt-get, los comandos deberán adaptarse a la sintaxis correspondiente.
Creación de las Carpetas en las que los Clientes Ubicarán la Información
Es necesario crear las carpetas donde los clientes del servidor SFTP almacenarán su información. En este ejemplo, se decide que toda la información del servidor SFTP se guardará en /home/sftpserver.
Primero, se crea la carpeta principal sftpserver dentro de /home:
mkdir /home/sftpserverLuego, dentro de /home/sftpserver, se crea una carpeta para cada usuario del servidor SFTP. Para los usuarios jccall80 y ramon, se ejecutan los siguientes comandos:
mkdir /home/sftpserver/jccall80mkdir /home/sftpserver/ramonA continuación, dentro de cada una de las carpetas de usuario, se crearán subcarpetas para organizar los archivos. Por ejemplo, para jccall80:
mkdir /home/sftpserver/jccall80/archivosmkdir /home/sftpserver/jccall80/compartirY de manera similar para ramon:
mkdir /home/sftpserver/ramon/archivosmkdir /home/sftpserver/ramon/compartirCrear un Grupo que Contiene a la Totalidad de Usuarios del Servidor SFTP
Para facilitar la gestión de permisos y la configuración de la "jaula" de los usuarios, se crea un grupo específico para los usuarios del servidor SFTP. En este caso, el grupo se llamará sftpserver.
groupadd sftpserverEste grupo será de gran utilidad para asignar permisos y restringir el acceso de los usuarios a sus directorios designados.
Crear los Usuarios y Añadirlos al Grupo de Nuestro Servidor SFTP
Una vez creado el grupo sftpserver, se procede a crear los usuarios que accederán al servidor SFTP. Para crear el usuario jccall80, se utiliza el siguiente comando:
useradd -g sftpserver -s /bin/false -d /home/sftpserver/jccall80 jccall80El desglose de este comando es el siguiente:
useradd: Comando para la creación de un nuevo usuario.-g sftpserver: Asigna el usuario al gruposftpserver.-s /bin/false: Define que el usuario no tendrá acceso a la terminal o intérprete de comandos. Esto es una medida de seguridad crucial para evitar que usuarios no autorizados ejecuten comandos en el servidor.-d /home/sftpserver/jccall80: Establece la ruta del directorio "home" por defecto para este usuario dentro de la estructura SFTP.jccall80: El nombre del usuario que se está creando.
De manera similar, se crea el usuario ramon:
useradd -g sftpserver -s /bin/false -d /home/sftpserver/ramon ramonCrear un Password para Cada Usuario
A continuación, se asignan contraseñas seguras a los usuarios recién creados. Para el usuario jccall80, se ejecuta el comando:
passwd jccall80El sistema pedirá que se introduzca la nueva contraseña dos veces para confirmarla. El mismo proceso se repite para el usuario ramon:
passwd ramonAsignar un Usuario y un Grupo a las Carpetas del Servidor SFTP
Con los grupos y usuarios creados, el siguiente paso es definir a qué usuario y grupo pertenecen cada una de las carpetas del servidor SFTP.
Las carpetas /home/sftpserver/jccall80/archivos y /home/sftpserver/jccall80/compartir deben pertenecer al usuario jccall80 y al grupo sftpserver. Para ello, se utilizan los comandos chown:
chown jccall80:sftpserver /home/sftpserver/jccall80/archivoschown jccall80:sftpserver /home/sftpserver/jccall80/compartirEl comando chown se utiliza para modificar el propietario y el grupo de archivos y directorios.
De forma análoga, las carpetas de ramon se asignan a su usuario y al grupo sftpserver:
chown ramon:sftpserver /home/sftpserver/ramon/archivoschown ramon:sftpserver /home/sftpserver/ramon/compartirFinalmente, las carpetas principales /home/sftpserver, /home/sftpserver/jccall80 y /home/sftpserver/ramon deben pertenecer al usuario root y al grupo root. Esto es esencial para el funcionamiento correcto del sistema de "jaula".
chown root:root /home/sftpserverchown root:root /home/sftpserver/jccall80chown root:root /home/sftpserver/ramonEs absolutamente indispensable que las carpetas que actúan como "jaula" (en este caso, /home/sftpserver, /home/sftpserver/jccall80 y /home/sftpserver/ramon) pertenezcan al usuario root y tengan permisos 755. De lo contrario, el mecanismo de enjaulamiento no funcionará correctamente.
Asignar Permisos a las Carpetas del Servidor SFTP
Una vez creadas las carpetas y asignados sus propietarios, es necesario definir los permisos de acceso adecuados para cada una.
Para las carpetas jccall80/archivos y ramon/archivos, se asignan permisos 700. Esto significa que solo el propietario de la carpeta tendrá permisos de lectura, escritura y ejecución, mientras que el resto de usuarios no tendrán ningún tipo de acceso. Esto es ideal para mantener la privacidad de la información individual de cada usuario.
chmod 700 /home/sftpserver/jccall80/archivoschmod 700 /home/sftpserver/ramon/archivosPara las carpetas jccall80/compartir y ramon/compartir, se asignan permisos 755. Con estos permisos, cualquier usuario podrá acceder y visualizar el contenido de estas carpetas, pero solo los propietarios podrán crear, eliminar o modificar archivos dentro de ellas. Estos permisos son perfectos para compartir información de manera controlada con otros usuarios del servidor SFTP.
chmod 755 /home/sftpserver/jccall80/compartirchmod 755 /home/sftpserver/ramon/compartirFinalmente, y de manera crucial, las carpetas que actúan como directorios raíz para los usuarios enjaulados (/home/sftpserver/jccall80 y /home/sftpserver/ramon), así como la carpeta principal /home/sftpserver, deben tener permisos 755. Esto es un requisito indispensable para que el sistema de enjaulamiento funcione correctamente.
chmod 755 /home/sftpserver/jccall80chmod 755 /home/sftpserver/ramonchmod 755 /home/sftpserverEnjaular a los Usuarios del Servidor SFTP
El proceso de "enjaular" a los usuarios SFTP, también conocido como chroot jail, restringe el acceso de un usuario a un directorio específico y sus subdirectorios. Esto impide que el usuario pueda navegar o acceder a cualquier otra parte del sistema de archivos del servidor.
Para configurar el chroot jail, se edita el archivo de configuración de SSH, típicamente ubicado en /etc/ssh/sshd_config.
Se añaden las siguientes líneas al final del archivo:
Match Group sftpserverChrootDirectory /home/sftpserverForceCommand internal-sftpAllowTcpForwarding noX11Forwarding noMatch Group sftpserver: Aplica las siguientes directivas solo a los miembros del gruposftpserver.ChrootDirectory /home/sftpserver: Define el directorio raíz al que se restringirá el acceso de los usuarios del grupo. Es fundamental que este directorio y todos sus directorios padres sean propiedad derooty tengan permisos755.ForceCommand internal-sftp: Fuerza a que todas las conexiones SFTP utilicen el subsistemainternal-sftpde OpenSSH, que está diseñado para funcionar dentro de un entorno chroot.AllowTcpForwarding noyX11Forwarding no: Desactivan el reenvío de puertos y X11, ya que no son necesarios para SFTP y pueden representar vulnerabilidades de seguridad.
Tras guardar los cambios en el archivo sshd_config, es necesario reiniciar el servicio SSH para que los cambios surtan efecto:
systemctl restart sshd
Conexión y Uso con Clientes SFTP
Una vez configurado el servidor, los usuarios podrán conectarse utilizando un cliente SFTP. Dos de las herramientas más populares y recomendadas son FileZilla y PuTTY.
Conexión con FileZilla
FileZilla es un cliente SFTP gratuito y de código abierto, disponible para Windows, macOS y Linux.
- Abrir el Gestor de Sitios: En FileZilla, ir a
Archivo>Gestor de Sitiosy hacer clic enNuevo sitio. - Configurar los Datos de Conexión:
- Protocolo: Seleccionar
SFTP - SSH File Transfer Protocol. - Servidor: Ingresar la dirección IP local fija del servidor (ej.
192.168.1.188) o el nombre de dominio configurado con DDNS si se accede desde fuera de la red local. - Puerto:
22(puerto estándar para SSH/SFTP). - Modo de Acceso:
Normal. - Usuario: El nombre de usuario SFTP creado (ej.
jccall80). - Contraseña: La contraseña asignada al usuario.
- Protocolo: Seleccionar
- Conectar: Hacer clic en
Conectar. En la primera conexión, FileZilla mostrará una advertencia sobre la clave del servidor. Se debe aceptar para continuar y establecer la confianza. - Transferencia de Archivos: Una vez conectado, la interfaz de FileZilla mostrará los archivos locales en el panel izquierdo y los archivos del servidor en el panel derecho. Los archivos se pueden transferir arrastrándolos entre los paneles.
Para mostrar archivos ocultos (como .htaccess), en FileZilla ir al menú Servidor y activar Forzar mostrar archivos ocultos. Si aún no son visibles, verificar en Ver > Filtros de listado de directorios que no estén filtrados.

Conexión con PuTTY (para SSH)
PuTTY es un cliente de terminal gratuito para Windows, ideal para conectarse a servidores vía SSH. Si se ha configurado un acceso SFTP+SSH, PuTTY se puede usar para acceder a la línea de comandos del servidor.
- Abrir PuTTY.
- Configurar la Sesión:
- Host Name (or IP address): La IP local o el dominio del servidor.
- Port:
22. - Connection type:
SSH.
- Guardar la Sesión (Opcional): Se puede guardar la configuración en
Saved Sessionspara futuras conexiones. - Conectar: Hacer clic en
Open. Al primer intento, se mostrará un aviso de seguridad sobre la clave del host; aceptarla. - Login: Se solicitará el nombre de usuario. Introducir el nombre de usuario SFTP (ej.
jccall80). Luego, se pedirá la contraseña. Al escribir la contraseña en PuTTY, no se mostrarán caracteres en pantalla; esto es normal.
Una vez conectado, se estará en la terminal del servidor, dentro del directorio configurado como "jaula" para ese usuario.
Comandos Básicos en la Terminal:
ls: Lista archivos y carpetas.ls -lamuestra también los archivos ocultos.cd [directorio]: Cambia de directorio.cd ..sube un nivel.pwd: Muestra la ruta del directorio actual.get [archivo_remoto] [archivo_local]: Descarga un archivo del servidor.put [archivo_local] [archivo_remoto]: Sube un archivo al servidor.quit: Cierra la sesión SFTP o SSH.
🟠 Cómo Configurar una IP ESTÁTICA en UBUNTU con NETPLAN 🌎
Consideraciones de Seguridad Adicionales
- Contraseñas Fuertes: Utilizar contraseñas largas, complejas y únicas para cada usuario SFTP.
- Eliminar Accesos Innecesarios: Borrar los accesos SFTP que ya no se utilicen para reducir la superficie de ataque.
- Claves SSH: Para una seguridad aún mayor, se puede configurar la autenticación mediante claves SSH en lugar de contraseñas. Esto implica generar un par de claves (pública y privada) y configurar el servidor para que las acepte. Las claves SSH otorgan acceso a todos los archivos de la cuenta y no se pueden configurar para limitar el acceso a carpetas específicas, por lo que su almacenamiento seguro es crucial.
- Permisos: Revisar y ajustar periódicamente los permisos de los archivos y directorios para asegurar que sean los más restrictivos posibles sin afectar la funcionalidad.
Configurar y utilizar un servidor SFTP es un paso fundamental para garantizar la seguridad y la eficiencia en la gestión de archivos. Al seguir estos pasos, se puede establecer un sistema robusto que protege la información sensible y permite un control total sobre las transferencias de datos.
tags: #configurar #dominio #sftp