15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
30.10.2024
3 +1

Protocolo SFTP: La Guía Completa para Transferencias de Archivos Seguras en tu VPS

Transferir archivos hacia y desde tu servidor es una de las tareas más rutinarias en el alojamiento web y la administración de sistemas — sin embargo, también es una de las que con más frecuencia se gestiona incorrectamente desde el punto de vista de la seguridad. Los protocolos heredados como FTP transmiten credenciales y datos en texto plano, dejando tu servidor completamente expuesto a interceptaciones. SFTP (SSH File Transfer Protocol) elimina ese riesgo por completo al enrutar cada byte de datos a través de un túnel SSH cifrado.

Esta guía cubre todo lo que necesitas saber sobre SFTP: cómo funciona internamente, cómo configurarlo en un VPS Linux, cómo conectarte usando tanto herramientas de línea de comandos como clientes GUI, y por qué debería ser tu método predeterminado para todas las operaciones de transferencia de archivos.

¿Qué es SFTP y en qué se diferencia de FTP?

SFTP son las siglas de SSH File Transfer Protocol. A pesar del nombre similar, no es una simple extensión del protocolo FTP tradicional — es un protocolo completamente independiente construido desde cero para operar sobre SSH (Secure Shell). Esta distinción tiene una enorme importancia en la práctica.

CaracterísticaFTPSFTP
CifradoNinguno (texto plano)Cifrado SSH completo
Puertos requeridos20 + 21 (+ rango pasivo)22 (puerto único)
AutenticaciónSolo usuario/contraseñaContraseña, clave SSH, 2FA
Compatibilidad con firewallComplejaSimple
Integridad de datosNo garantizadaVerificada criptográficamente

El FTP tradicional envía tu nombre de usuario, contraseña y todos los datos de archivos en texto claro. Cualquier persona que realice una captura de paquetes en el mismo segmento de red puede leer tus credenciales al instante. SFTP cifra toda la sesión — autenticación, comandos y datos de archivos — utilizando la misma criptografía probada en batalla que protege las conexiones SSH en todo el mundo.

Cómo funciona SFTP: una descripción técnica

Cuando inicias una sesión SFTP, ocurre la siguiente secuencia:

  1. Se establece una conexión TCP al puerto 22 del servidor remoto.
  2. Se produce el handshake SSH: el servidor presenta su clave de host y el cliente la verifica contra los hosts conocidos para prevenir ataques de intermediario.
  3. Se realiza la autenticación — ya sea mediante contraseña o par de claves pública/privada.
  4. Se invoca el subsistema SFTP dentro de la sesión SSH autenticada.
  5. Las operaciones de archivos (subir, descargar, renombrar, eliminar, listar directorios) se realizan a través del canal cifrado.

Toda la sesión, desde la autenticación hasta el último byte de datos transferidos, está protegida por cifrado simétrico negociado durante el handshake SSH. Ninguna credencial ni contenido de archivo viaja jamás en texto plano.

Paso 1: Instalación y configuración del servidor OpenSSH

La mayoría de las distribuciones Linux modernas — incluyendo Ubuntu y Debian — incluyen OpenSSH preinstalado o disponible fácilmente en sus repositorios de paquetes. Si estás ejecutando una instancia nueva de VPS Hosting, verifica que el servidor OpenSSH esté presente y en ejecución.

Instalar OpenSSH en Ubuntu/Debian

sudo apt update && sudo apt install openssh-server -y

Verificar que el servicio está en ejecución

sudo systemctl status ssh

Deberías ver active (running) en la salida. Si el servicio no está en ejecución, inícialo y habilítalo:

sudo systemctl start ssh
sudo systemctl enable ssh

Verificar que SFTP está habilitado

OpenSSH incluye soporte SFTP a través de un subsistema integrado. Confirma que está configurado en /etc/ssh/sshd_config:

grep -i sftp /etc/ssh/sshd_config

Deberías ver una línea similar a:

Subsystem sftp /usr/lib/openssh/sftp-server

Si esta línea falta o está comentada, agrégala y reinicia el daemon SSH:

sudo systemctl restart ssh

Paso 2: Creación de un usuario SFTP dedicado (buena práctica)

En lugar de usar tu cuenta root o una cuenta de administrador general para las transferencias de archivos, crea un usuario SFTP dedicado con acceso restringido. Esto limita el impacto en caso de que las credenciales se vean comprometidas.

Crear el usuario y establecer un directorio home

sudo adduser sftpuser
sudo mkdir -p /var/sftp/uploads
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
sudo chown sftpuser:sftpuser /var/sftp/uploads

Configurar la jaula Chroot en sshd_config

Abre /etc/ssh/sshd_config y añade el siguiente bloque al final del archivo:

Match User sftpuser
    ForceCommand internal-sftp
    PasswordAuthentication yes
    ChrootDirectory /var/sftp
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no

Esta configuración encierra al usuario dentro de /var/sftp, impidiéndole navegar a otras partes del sistema de archivos. Reinicia SSH para aplicar los cambios:

sudo systemctl restart ssh

Paso 3: Configuración de la autenticación por clave SSH para SFTP

La autenticación por contraseña es conveniente pero menos segura que la autenticación basada en claves. Para entornos de producción, se recomiendan encarecidamente los pares de claves SSH.

Generar un par de claves SSH en tu máquina local

En Linux o macOS:

ssh-keygen -t ed25519 -C "sftp-key-$(date +%Y%m%d)"

En Windows (PowerShell o Windows Terminal):

ssh-keygen -t ed25519

Esto genera dos archivos: una clave privada (mantenla en secreto, nunca la compartas) y una clave pública (que termina en .pub).

Copiar la clave pública al servidor

ssh-copy-id -i ~/.ssh/id_ed25519.pub sftpuser@your-server-ip

Alternativamente, añade manualmente la clave pública a ~/.ssh/authorized_keys en el servidor.

Deshabilitar la autenticación por contraseña (opcional pero recomendado)

Una vez confirmado el funcionamiento de la autenticación basada en claves, deshabilita el inicio de sesión por contraseña para el usuario SFTP en sshd_config cambiando PasswordAuthentication yes a PasswordAuthentication no dentro del bloque Match User.

Paso 4: Conexión a SFTP desde la línea de comandos

El cliente SFTP de línea de comandos está disponible de forma nativa en Linux y macOS, y se incluye con OpenSSH en Windows 10/11.

Sintaxis básica de conexión

sftp username@hostname_or_ip

Ejemplo:

sftp sftpuser@203.0.113.45

Conexión en un puerto no estándar

Si tu daemon SSH escucha en un puerto distinto al 22 (una medida común de refuerzo de seguridad):

sftp -P 2222 sftpuser@203.0.113.45

Conexión con una clave SSH

sftp -i ~/.ssh/id_ed25519 sftpuser@203.0.113.45

Paso 5: Comandos esenciales de SFTP

Una vez conectado, operas en un shell SFTP interactivo. Los siguientes comandos cubren la gran mayoría de las tareas cotidianas de gestión de archivos.

# List files on the remote server
ls
ls -la

# Change remote directory
cd /var/sftp/uploads

# Show current remote directory
pwd

# List files on your local machine
lls

# Change local directory
lcd ~/Downloads

# Show current local directory
lpwd

Subir archivos

# Upload a single file
put localfile.txt

# Upload a file to a specific remote path
put localfile.txt /var/sftp/uploads/localfile.txt

# Upload an entire directory recursively
put -r /local/directory /var/sftp/uploads/

Descargar archivos

# Download a single file to the current local directory
get remotefile.txt

# Download a file to a specific local path
get remotefile.txt ~/Downloads/remotefile.txt

# Download an entire directory recursively
get -r /var/sftp/uploads/ ~/local-backup/

Gestión de archivos y directorios

# Create a remote directory
mkdir new-folder

# Remove a remote file
rm old-file.txt

# Remove a remote directory
rmdir empty-folder

# Rename or move a file
rename old-name.txt new-name.txt

Cerrar la sesión

exit
# or
bye
# or press Ctrl+D

Paso 6: Conexión con clientes GUI

SFTP por línea de comandos es potente, pero los clientes gráficos suelen ser más prácticos para gestionar grandes cantidades de archivos o para miembros del equipo menos familiarizados con la terminal.

FileZilla (Windows, macOS, Linux)

FileZilla es uno de los clientes SFTP gratuitos más utilizados.

  1. Abre FileZilla y navega a Archivo → Gestor de sitios.
  2. Haz clic en Nuevo sitio y asígnale un nombre descriptivo.
  3. Establece el Protocolo en SFTP – SSH File Transfer Protocol.
  4. Introduce tu Host (dirección IP o dominio) y el Puerto (por defecto: 22).
  5. Establece el Tipo de acceso en Key file para autenticación por clave SSH, o Normal para autenticación por contraseña.
  6. Introduce tu Nombre de usuario y navega hasta tu archivo de clave privada si usas autenticación basada en clave.
  7. Haz clic en Conectar.

Ahora puedes arrastrar y soltar archivos entre tu máquina local (panel izquierdo) y el servidor remoto (panel derecho).

WinSCP (Windows)

WinSCP es una popular alternativa exclusiva para Windows con una interfaz de doble panel y una fuerte integración con los formatos de clave PuTTY.

  1. Abre WinSCP y crea una Nueva sesión.
  2. Establece el Protocolo de archivo en SFTP.
  3. Introduce el Nombre de host, el Número de puerto, el Nombre de usuario y la Contraseña (o configura una clave SSH en Avanzado → SSH → Autenticación).
  4. Haz clic en Iniciar sesión.

Cyberduck (macOS, Windows)

Cyberduck es un cliente moderno y limpio que admite SFTP junto con S3, FTP y otros protocolos. Conéctate haciendo clic en Abrir conexión, seleccionando SFTP (SSH File Transfer Protocol) e introduciendo las credenciales de tu servidor.

Automatización de transferencias SFTP con scripts

Para tareas recurrentes como copias de seguridad, recopilación de registros o pipelines de despliegue, puedes automatizar las transferencias SFTP usando scripts de shell combinados con autenticación por clave SSH (sin necesidad de introducir contraseña).

Ejemplo: script de copia de seguridad automatizada

#!/bin/bash

# Configuration
REMOTE_USER="sftpuser"
REMOTE_HOST="203.0.113.45"
REMOTE_DIR="/var/sftp/uploads/backups"
LOCAL_BACKUP_DIR="/var/backups/myapp"
SSH_KEY="/root/.ssh/id_ed25519"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_${DATE}.tar.gz"

# Create the backup archive
tar -czf "/tmp/${BACKUP_FILE}" "${LOCAL_BACKUP_DIR}"

# Upload via SFTP
sftp -i "${SSH_KEY}" "${REMOTE_USER}@${REMOTE_HOST}" <<EOF
cd ${REMOTE_DIR}
put /tmp/${BACKUP_FILE}
bye
EOF

# Clean up local temp file
rm "/tmp/${BACKUP_FILE}"

echo "Backup ${BACKUP_FILE} uploaded successfully."

Programa esto con un cron job para que se ejecute cada noche:

crontab -e
# Add:
0 2 * * * /usr/local/bin/backup-sftp.sh >> /var/log/sftp-backup.log 2>&1

Refuerzo de seguridad para SFTP en producción

Ejecutar SFTP en un servidor de producción requiere más que la configuración predeterminada. Aplica estas medidas de refuerzo para reducir significativamente tu superficie de ataque.

1. Cambiar el puerto SSH predeterminado

Cambiar el puerto 22 por un puerto no estándar (por ejemplo, 2222 o 22222) reduce drásticamente los intentos automatizados de fuerza bruta:

# In /etc/ssh/sshd_config
Port 2222

2. Restringir el acceso SFTP por dirección IP

Si tu equipo se conecta desde direcciones IP conocidas, restringe el acceso SSH/SFTP usando UFW o /etc/hosts.allow:

sudo ufw allow from 203.0.113.10 to any port 22
sudo ufw deny 22

3. Implementar Fail2Ban

Fail2Ban monitorea los registros de autenticación y bloquea automáticamente las direcciones IP tras un número configurable de intentos de inicio de sesión fallidos:

sudo apt install fail2ban -y
sudo systemctl enable fail2ban

4. Deshabilitar el inicio de sesión root vía SSH

# In /etc/ssh/sshd_config
PermitRootLogin no

5. Usar algoritmos de clave SSH robustos

Prefiere claves ed25519 o ecdsa sobre el algoritmo rsa más antiguo. Al generar claves, usa siempre al menos 4096 bits para RSA:

ssh-keygen -t ed25519
# or
ssh-keygen -t rsa -b 4096

6. Establecer permisos de archivo adecuados

Asegúrate de que los archivos de configuración SSH tengan los permisos correctos para evitar modificaciones no autorizadas:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519

Ventajas clave de SFTP sobre protocolos alternativos

Seguridad

SFTP cifra tanto el canal de control como el canal de datos mediante SSH. No existe ningún escenario en el que las credenciales o el contenido de los archivos viajen en texto plano. Esto lo hace categóricamente más seguro que FTP y más sencillo de proteger que FTPS (FTP sobre SSL/TLS), que requiere gestión de certificados y múltiples puertos.

Compatibilidad con firewall y NAT

FTP en modo pasivo requiere que se abra un rango de puertos de datos en el firewall, lo que supone una carga administrativa significativa y una mayor superficie de ataque. SFTP utiliza un único puerto (22 por defecto), lo que hace que las reglas del firewall sean simples y predecibles.

Autenticación unificada con SSH

Dado que SFTP funciona sobre SSH, hereda todo el ecosistema de autenticación: autenticación por contraseña, autenticación por clave pública, autenticación basada en certificados y autenticación de dos factores. Si ya gestionas el acceso SSH a tu servidor, SFTP no requiere infraestructura de autenticación adicional.

Integridad de datos

La capa de transporte de SSH incluye códigos de autenticación de mensajes (MACs) que verifican la integridad de cada paquete. Esto significa que no solo tus datos están cifrados en tránsito, sino que cualquier manipulación o corrupción es detectada y la transferencia se interrumpe.

Soporte de reanudación

A diferencia del FTP básico, SFTP admite la reanudación de transferencias interrumpidas, lo cual es fundamental al subir archivos grandes a través de conexiones poco fiables.

SFTP en el contexto de tu stack de alojamiento

SFTP no es solo una herramienta independiente — se integra de forma natural en un flujo de trabajo más amplio de alojamiento y despliegue. Estos son los casos de uso más comunes:

Gestión de WordPress y CMS: Sube temas, plugins y archivos multimedia directamente a tu servidor sin depender de un panel de control de alojamiento. Esto es especialmente útil cuando trabajas con un VPS con cPanel u otros entornos de panel de control donde necesitas acceso directo al sistema de archivos.

Despliegue de aplicaciones: Envía assets compilados, archivos de configuración o directorios de aplicaciones completos a tu servidor como parte de un pipeline de despliegue.

Copias de seguridad de bases de datos y configuración: Automatiza la transferencia de volcados de bases de datos y copias de seguridad de configuración a una ubicación de almacenamiento remota usando el enfoque de scripting descrito anteriormente.

Recopilación de registros: Descarga los registros del servidor a tu máquina local para su análisis sin otorgar acceso SSH amplio a los analistas.

Publicación de sitios estáticos: Despliega sitios web estáticos generados por herramientas como Hugo, Jekyll o Next.js directamente en la raíz web de tu servidor.

Si gestionas múltiples proyectos o necesitas entornos aislados para diferentes clientes, un plan de VPS Hosting te proporciona el acceso root y la flexibilidad para configurar SFTP exactamente según las necesidades de tu flujo de trabajo — incluyendo jaulas chroot, permisos por usuario y configuraciones de puertos personalizados.

Para equipos que gestionan un gran número de dominios y sitios web, combinar el acceso SFTP con Alojamiento Web Compartido o un entorno dedicado garantiza que las transferencias de archivos sean rápidas, cifradas y auditables.

Solución de problemas comunes de SFTP

“Conexión rechazada” en el puerto 22

  • Verifica que el servicio SSH está en ejecución: sudo systemctl status ssh
  • Comprueba que el puerto 22 está abierto en tu firewall: sudo ufw status
  • Confirma que te estás conectando a la dirección IP correcta

“Permiso denegado” durante la subida de archivos

  • Comprueba que el directorio de destino existe y tiene permisos de escritura para el usuario SFTP
  • Verifica la propiedad del directorio chroot: la raíz del chroot debe ser propiedad de root con permisos 755
  • Revisa /var/log/auth.log para obtener mensajes de error detallados

“Verificación de clave de host fallida”

  • La clave de host del servidor ha cambiado (posiblemente tras una reinstalación o reasignación de IP)
  • Elimina la clave antigua: ssh-keygen -R hostname_or_ip
  • Vuelve a conectarte y acepta la nueva clave de host

Velocidades de transferencia lentas

  • Prueba el rendimiento de tu red de forma independiente para descartar un problema de conectividad
  • Considera habilitar la compresión SSH para transferencias con mucho texto: sftp -C username@hostname
  • Para archivos muy grandes, rsync sobre SSH puede ser más eficiente que SFTP

“Broken pipe” o desconexiones durante la transferencia

  • Aumenta la configuración de keepalive de SSH en ~/.ssh/config:
  Host *
      ServerAliveInterval 60
      ServerAliveCountMax 3

Comparación entre SFTP, FTPS y SCP

SFTPFTPSSCP
Base del protocoloSSHSSL/TLS sobre FTPSSH
Puertos1 (puerto 22)2+ (21 + puertos de datos)1 (puerto 22)
Reanudar transferenciasDepende del clienteNo
Listado de directoriosNo
Sesión interactivaNo
Compatible con firewallExcelenteModeradaExcelente
Certificado requeridoNoNo

SCP (Secure Copy Protocol) es más rápido para copias de archivos simples, pero carece de las capacidades de sesión interactiva de SFTP. No puede listar directorios, reanudar transferencias ni gestionar archivos remotos. Usa SCP para copias puntuales rápidas; usa SFTP para la gestión interactiva de archivos y la automatización.

FTPS añade cifrado TLS al protocolo FTP tradicional. Requiere gestión de certificados SSL (considera combinarlo con Certificados SSL para tu dominio) y es más complejo de configurar a través de firewalls. SFTP es generalmente preferido para nuevos despliegues a menos que tengas un requisito específico de compatibilidad con FTPS.

Preguntas frecuentes

¿Es SFTP lo mismo que FTPS?

No. SFTP (SSH File Transfer Protocol) es un protocolo completamente independiente que funciona sobre SSH. FTPS es FTP con cifrado TLS/SSL añadido encima. Son incompatibles entre sí.

¿Requiere SFTP un puerto separado del SSH?

No. SFTP funciona sobre la misma conexión SSH en el puerto 22. No es necesario abrir puertos adicionales.

¿Puedo usar SFTP con autenticación de dos factores?

Sí. Dado que SFTP utiliza SSH para la autenticación, cualquier método 2FA compatible con SSH (como TOTP a través de Google Authenticator o Duo) puede aplicarse también a las sesiones SFTP.

¿Es SFTP adecuado para transferir archivos grandes?

Sí. SFTP admite transferencias de archivos grandes y puede reanudar transferencias interrumpidas, lo que lo hace fiable para subidas y descargas de gran tamaño.

¿Puedo restringir a un usuario SFTP a un directorio específico?

Sí. La configuración de jaula chroot descrita en el Paso 2 de esta guía confina al usuario a un directorio designado, impidiendo el acceso al resto del sistema de archivos.

Conclusión

SFTP es el estándar de oro para las transferencias de archivos seguras en entornos de servidores Linux. Al combinar la simplicidad de la gestión de archivos al estilo FTP con la robusta seguridad criptográfica de SSH, elimina las vulnerabilidades más significativas de los protocolos de texto plano, manteniéndose al mismo tiempo sencillo de configurar y usar.

Las conclusiones clave de esta guía:

  • Instala OpenSSH en tu servidor — el soporte SFTP se incluye automáticamente
  • Crea un usuario SFTP dedicado con una jaula chroot para entornos de producción
  • Usa autenticación por clave SSH en lugar de contraseñas siempre que sea posible
  • Aplica medidas de refuerzo de seguridad: cambia el puerto predeterminado, implementa Fail2Ban, deshabilita el inicio de sesión root
  • Automatiza las transferencias recurrentes con scripts de shell y cron jobs
  • Elige el cliente adecuado — CLI para scripting y automatización, FileZilla o WinSCP para uso interactivo

Ya sea que estés gestionando una instalación de WordPress, desplegando una aplicación web o automatizando copias de seguridad del servidor, SFTP proporciona la seguridad, fiabilidad y flexibilidad que tu flujo de trabajo exige. Combínalo con un entorno de VPS Hosting de alto rendimiento con almacenamiento SSD, protección DDoS y acceso root completo, y tendrás una configuración de transferencia de archivos que es tanto rápida como genuinamente segura.

Para equipos con necesidades de infraestructura más complejas — incluyendo aplicaciones de alto tráfico o cargas de trabajo con uso intensivo de recursos — explora los Servidores Dedicados para obtener el máximo rendimiento y aislamiento, o revisa los Paneles de Control VPS disponibles para encontrar la interfaz de gestión que mejor se adapte al flujo de trabajo de tu equipo.

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar