Copia de Archivos vía SSH: Guía Completa de SCP, rsync y SFTP
SSH (Secure Shell) es la base de la gestión segura de servidores remotos. Ya seas un desarrollador implementando código, un administrador de sistemas gestionando infraestructura, o un usuario avanzado manteniendo un entorno de VPS Hosting, la transferencia segura de archivos entre máquinas es una tarea que realizarás constantemente.
Esta guía completa cubre todos los métodos principales para copiar archivos a través de SSH — incluyendo SCP, rsync, SFTP, y automatización basada en claves — con sintaxis del mundo real, ejemplos prácticos, y consejos de expertos para ayudarte a trabajar más rápido y de forma más segura.
¿Por qué usar SSH para transferencias de archivos?

Antes de profundizar en las herramientas, vale la pena entender por qué la transferencia de archivos basada en SSH es el estándar de la industria para administradores de servidores y desarrolladores.
- Cifrado de extremo a extremo: Cada byte de datos — incluyendo credenciales, comandos y contenidos de archivos — se cifra en tránsito utilizando algoritmos criptográficos modernos. Esto hace que las transferencias SSH sean inmunes al sniffing de paquetes y ataques de intermediario.
- Sin software adicional requerido: SSH viene preinstalado en prácticamente todos los sistemas Linux/Unix y está disponible nativamente en Windows 10+ y macOS.
- Versatilidad: Una única conexión SSH puede manejar sesiones de shell interactivas, transferencias de archivos, reenvío de puertos y scripts automatizados.
- Amigable con la automatización: SSH se integra perfectamente con trabajos cron, pipelines CI/CD y scripts de copia de seguridad, permitiendo transferencias de archivos completamente automatizadas y sin contraseña.
- Confiabilidad: Las conexiones SSH manejan interrupciones de red con elegancia, especialmente cuando se combinan con herramientas como rsync.
Método 1: Copiar Archivos con SCP (Secure Copy Protocol)

SCP es la herramienta más simple y ampliamente utilizada para transferencias de archivos únicas a través de SSH. Funciona aprovechando tu conexión SSH existente para copiar archivos de forma segura entre hosts.
1) Sintaxis Básica de SCP
scp [options] [source] [destination]2) Cargar un Archivo desde la Máquina Local al Servidor Remoto
scp /path/to/local/file username@remote_host:/path/to/remote/destinationDesglose:
| /path/to/local/file | el archivo que deseas transferir en tu máquina local |
| username@remote_host | tu nombre de usuario SSH y el nombre de host o dirección IP del servidor |
| /path/to/remote/destination | el directorio de destino o ruta de archivo en el servidor remoto |
3) Descargar un Archivo desde el Servidor Remoto a la Máquina Local
scp username@remote_host:/path/to/remote/file /path/to/local/destinationSimplemente invierte el origen y el destino para descargar un archivo del servidor a tu máquina local.
4) Copiar un Directorio Completo de Forma Recursiva
scp -r /path/to/local/directory username@remote_host:/path/to/remote/destinationLa bandera -r le indica a SCP que copie el directorio y todo su contenido de forma recursiva, incluyendo subdirectorios anidados.
5) Opciones Útiles de SCP
| Opción | Descripción |
|---|---|
| -P [port] | Especifica un puerto SSH personalizado (nota: mayúscula -P, a diferencia de la minúscula -p de SSH) |
| -C | Habilita compresión para transferencias más rápidas en conexiones lentas |
| -i [identity_file] | Utiliza una clave privada SSH específica para la autenticación |
| -l [limit] | Limita el uso de ancho de banda en Kbit/s |
| -q | Modo silencioso — suprime la salida de progreso |
| -v | Modo detallado — útil para depurar problemas de conexión |
6) Cuándo Usar SCP
SCP es ideal para transferencias de archivos rápidas y únicas donde la simplicidad es importante. No requiere configuración y funciona de inmediato en cualquier sistema con SSH instalado. Sin embargo, para directorios grandes o transferencias repetidas, rsync es una opción significativamente mejor.
Método 2: Copiar Archivos con rsync

rsync es la opción profesional para sincronización y transferencia de archivos sobre SSH. Su característica principal es la transferencia delta: en lugar de copiar archivos completos, rsync analiza el origen y el destino y transfiere solo las partes modificadas. Esto ahorra enormes cantidades de tiempo y ancho de banda cuando se trabaja con archivos grandes o directorios que se actualizan frecuentemente.
1) Sintaxis Básica de rsync
rsync [options] [source] [destination]2) Subir un Archivo desde la Máquina Local al Servidor Remoto
rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination3) Sincronizar un Directorio Completo a un Servidor Remoto
rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/Importante: Nota la barra diagonal final / después del directorio de origen. Con una barra diagonal final, rsync copia el contenido del directorio. Sin ella, rsync copia el directorio en sí como un subdirectorio del destino.
4) Espejo de un Directorio (Eliminar Archivos Removidos del Origen)
rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/La bandera –delete asegura que los archivos eliminados del origen también se eliminen del destino, manteniendo ambas ubicaciones perfectamente sincronizadas.
5) Usar un Puerto SSH Personalizado
rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/6) Opciones Útiles de rsync
| Opción | Descripción |
|---|---|
| -a | Modo archivo: preserva permisos, marcas de tiempo, enlaces simbólicos y propiedad |
| -v | Detallado: muestra el progreso archivo por archivo durante la transferencia |
| -z | Compresión: reduce los datos transferidos a través de la red |
| –delete | Elimina archivos en el destino que ya no existen en el origen |
| –progress | Muestra el progreso en tiempo real para cada archivo |
| –exclude | Excluir archivos específicos o patrones (p. ej., –exclude ‘*.log’) |
| -n o –dry-run | Simula la transferencia sin copiar nada realmente |
| -e “ssh -p [port]” | Especificar un puerto SSH personalizado |
| –bwlimit=[KB/s] | Limitar la velocidad de transferencia para evitar saturar tu conexión |
7) Cuándo Usar rsync
Usa rsync para copias de seguridad, implementaciones y cualquier tarea de sincronización recurrente. Es especialmente potente cuando se administran bases de código grandes, bibliotecas de medios o exportaciones de bases de datos en un Servidor Dedicado donde la eficiencia del ancho de banda y la integridad de los datos son críticas.
Método 3: Copiar Archivos Entre Dos Servidores Remotos

Una capacidad menos conocida pero extremadamente útil de SCP y rsync es la capacidad de transferir archivos directamente entre dos servidores remotos — sin enrutar los datos a través de tu máquina local. Esto es invaluable al migrar servidores o sincronizar datos entre instancias en la nube.
1) Copiar Archivos Entre Dos Servidores Remotos con SCP
scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination2) Copiar Archivos Entre Dos Servidores Remotos con rsync
rsync -avz username1@remote_host1:/path/to/source/ username2@remote_host2:/path/to/destination/Nota: Para que las transferencias de servidor a servidor funcionen, el servidor de origen debe poder establecer una conexión SSH con el servidor de destino. Es posible que necesites configurar claves SSH en el servidor de origen o usar reenvío de agente SSH (ssh -A).
3) Transferencia de Servidor a Servidor a través de Túnel SSH (Método Alternativo)
Si SSH directo de servidor a servidor no es posible debido a restricciones de firewall, puedes canalizar la transferencia a través de tu máquina local usando tar y ssh:
ssh username1@remote_host1 "tar czf - /path/to/source" | ssh username2@remote_host2 "tar xzf - -C /path/to/destination"Esto transmite un archivo comprimido desde el servidor 1 directamente al servidor 2 a través de tu sesión de terminal local.
Método 4: Copiar Archivos con SFTP (SSH File Transfer Protocol)

SFTP proporciona una experiencia interactiva similar a FTP sobre una conexión SSH cifrada. A diferencia de SCP, que es una herramienta de comando único, SFTP abre una sesión persistente donde puede examinar directorios, cargar, descargar, renombrar y eliminar archivos de forma interactiva.
1) Iniciar una Sesión SFTP
sftp username@remote_hostSe abrirá un prompt SFTP (sftp>), desde el cual puede ejecutar los siguientes comandos:
2) Comandos SFTP Esenciales
| Comando | Descripción |
|---|---|
| ls | Listar archivos en el directorio remoto actual |
| lls | Listar archivos en el directorio local actual |
| cd /remote/path | Cambiar el directorio remoto |
| lcd /local/path | Cambiar el directorio local |
| put /local/file /remote/destination | Cargar un archivo al servidor remoto |
| get /remote/file /local/destination | Descargar un archivo del servidor remoto |
| mput *.txt | Cargar múltiples archivos que coincidan con un patrón |
| mget *.log | Descargar múltiples archivos que coincidan con un patrón |
| mkdir /remote/newdir | Crear un directorio en el servidor remoto |
| rm /remote/file | Eliminar un archivo en el servidor remoto |
| exit o quit | Cerrar la sesión SFTP |
3) Conectar a un Puerto SSH Personalizado a través de SFTP
sftp -P 2222 username@remote_host4) Cuándo Usar SFTP
SFTP es más adecuado para sesiones interactivas de gestión de archivos — por ejemplo, cuando necesita examinar una estructura de directorios remota, descargar selectivamente archivos de registro o cargar archivos de configuración en un servidor web. Muchos clientes GUI (como FileZilla, Cyberduck y WinSCP) utilizan SFTP como su protocolo subyacente, haciéndolo accesible también para usuarios no técnicos.
Método 5: Automatizar Transferencias de Archivos con Autenticación de Clave SSH

Ingresar manualmente una contraseña para cada transferencia de archivo es ineficiente e incompatible con la automatización. La autenticación basada en claves SSH resuelve esto permitiendo inicios de sesión seguros criptográficamente sin contraseña — un requisito previo para cualquier flujo de trabajo de copia de seguridad o implementación automatizado.
1) Generar un Par de Claves SSH
En tu máquina local, ejecuta:
ssh-keygen -t ed25519 -C "your_email@example.com"Nota: ed25519 es el algoritmo moderno recomendado. Usa -t rsa -b 4096 si necesitas compatibilidad con sistemas más antiguos.
Sigue las indicaciones para guardar la clave (ubicación predeterminada: ~/.ssh/id_ed25519) y opcionalmente establece una frase de contraseña para mayor seguridad.
2) Copiar Tu Clave Pública al Servidor Remoto
ssh-copy-id username@remote_hostEsto añade tu clave pública al archivo ~/.ssh/authorized_keys en el servidor remoto. Se te pedirá tu contraseña una última vez.
Si ssh-copy-id no está disponible, puedes hacerlo manualmente:
cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"3) Probar Autenticación sin Contraseña
ssh username@remote_hostSi te conectas sin que se te pida una contraseña, la autenticación basada en claves está funcionando correctamente.
4) Automatizar Transferencias con un Script de Shell
Con SSH sin contraseña configurado, ahora puedes automatizar transferencias de archivos en trabajos cron o scripts:
#!/bin/bash
# Daily backup script
rsync -avz --delete /var/www/html/ username@backup_server:/backups/www/Añade esto a tu crontab (crontab -e) para ejecutar cada noche:
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1Solución de problemas comunes de transferencia de archivos SSH

Incluso los administradores experimentados encuentran problemas. Aquí están los problemas más comunes y sus soluciones:
Permiso denegado (publickey)
- Verifica que la clave pública se agregue correctamente a ~/.ssh/authorized_keys en el servidor remoto
- Comprueba que ~/.ssh tenga permisos 700 y authorized_keys tenga permisos 600
- Confirma que el demonio SSH permite autenticación por clave (PubkeyAuthentication yes en /etc/ssh/sshd_config)
Conexión rechazada
- Verifica que el servicio SSH esté ejecutándose: systemctl status sshd
- Comprueba que se esté utilizando el puerto correcto
- Revisa las reglas del firewall: ufw status o iptables -L
La velocidad de transferencia es lenta
- Habilita compresión: agrega -C a SCP o -z a rsync
- Usa un cifrado más rápido: ssh -c aes128-ctr (menos seguro pero más rápido en enlaces de alta latencia)
- Para transferencias grandes, considera rsync con –bwlimit para evitar saturar tu red
Verificación de clave de host fallida
- La huella digital SSH del servidor remoto ha cambiado (podría indicar un problema de seguridad o una reconstrucción del servidor)
- Elimina la clave antigua: ssh-keygen -R remote_host
- Reconecta y verifica la nueva huella digital antes de aceptarla
Elegir la herramienta correcta: SCP vs. rsync vs. SFTP

| Característica | SCP | rsync | SFTP |
|---|---|---|---|
| Facilidad de uso | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Transferencias delta | ❌ | ✅ | ❌ |
| Sincronización de directorios | ✅ (recursivo) | ✅ (con –delete) | ✅ (manual) |
| Modo interactivo | ❌ | ❌ | ✅ |
| Automatización | ✅ | ✅ | ✅ (con scripts) |
| Eficiencia de ancho de banda | Baja | Alta | Baja |
| Mejor para | Transferencias rápidas puntuales | Copias de seguridad y sincronización | Navegación interactiva |
Protegiendo tus transferencias de archivos SSH: Mejores prácticas

Independientemente de qué herramienta uses, sigue estas mejores prácticas de seguridad para proteger tus servidores y datos:
- Desactiva la autenticación por contraseña — Usa exclusivamente claves SSH y establece PasswordAuthentication no en /etc/ssh/sshd_config
- Cambia el puerto SSH predeterminado — Alejarse del puerto 22 reduce dramáticamente los intentos automatizados de fuerza bruta
- Usa fail2ban — Bloquea automáticamente las IPs que fallan repetidamente en la autenticación
- Restringe el acceso SSH por IP — Usa reglas de firewall o directivas AllowUsers para limitar quién puede conectarse
- Mantén SSH actualizado — Actualiza regularmente OpenSSH para parchear vulnerabilidades conocidas
- Usa algoritmos de clave fuerte — Prefiere ed25519 o rsa-4096 sobre algoritmos más antiguos y débiles
- Asegura tus aplicaciones web — Combina la seguridad SSH con un Certificado SSL para encriptar todo el tráfico hacia tus servicios web
Preguntas Frecuentes

1) ¿Cuál es la diferencia entre SCP y SFTP?
SCP es una herramienta de línea de comandos no interactiva diseñada para transferencias de archivos rápidas y de un solo comando. SFTP es un protocolo interactivo que te permite explorar, gestionar, cargar y descargar archivos en una interfaz basada en sesiones. Ambos utilizan SSH para el cifrado.
2) ¿Puedo usar rsync sin SSH?
Sí — rsync tiene su propio modo daemon que funciona sin SSH, pero es menos seguro. Para cualquier transferencia orientada a Internet, siempre usa rsync sobre SSH (rsync -e ssh).
3) ¿Cómo transfiero archivos si mi servidor utiliza un puerto SSH no estándar?
Usa la bandera -P con SCP (scp -P 2222) o la opción -e “ssh -p 2222” con rsync. Para SFTP, usa sftp -P 2222.
4) ¿Está SCP deprecado?
Los desarrolladores de OpenSSH han señalado que el protocolo subyacente de SCP tiene limitaciones y recomiendan usar SFTP o rsync para nuevos flujos de trabajo. Sin embargo, SCP sigue siendo ampliamente disponible y funcional en prácticamente todos los sistemas.
Conclusión

Dominar la transferencia de archivos basada en SSH es una habilidad esencial para cualquiera que gestione servidores, implemente aplicaciones o mantenga infraestructura remota. Cada herramienta tiene su lugar:
- SCP es tu opción ideal para transferencias rápidas, simples y puntuales
- rsync es indispensable para copias de seguridad, implementaciones y sincronización eficiente de grandes conjuntos de datos
- SFTP destaca en sesiones interactivas donde necesitas explorar y gestionar archivos sobre la marcha
Combinar estas herramientas con autenticación de clave SSH y prácticas de seguridad sólidas te proporciona un flujo de trabajo de transferencia de archivos robusto, automatizado y seguro que se escala desde una única cuenta de Alojamiento Web Compartido hasta arquitecturas multi-servidor complejas en Servidores Dedicados.
Si buscas un entorno de alojamiento confiable y de alto rendimiento para poner en práctica estas habilidades, explora los planes de Alojamiento VPS de AlexHost — diseñados para desarrolladores y administradores de sistemas que exigen acceso root completo, almacenamiento SSD y conectividad de red de nivel empresarial.
en todos los servicios de hosting