Ahorre 15% 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
Secciones
Linux Seguridad

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?

disruptive

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)

disruptive

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/destination

Desglose:

/path/to/local/fileel archivo que deseas transferir en tu máquina local
username@remote_hosttu nombre de usuario SSH y el nombre de host o dirección IP del servidor
/path/to/remote/destinationel 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/destination

Simplemente 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/destination

La 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ónDescripción
-P [port]Especifica un puerto SSH personalizado (nota: mayúscula -P, a diferencia de la minúscula -p de SSH)
-CHabilita 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
-qModo silencioso — suprime la salida de progreso
-vModo 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

disruptive

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/destination

3) 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ónDescripción
-aModo archivo: preserva permisos, marcas de tiempo, enlaces simbólicos y propiedad
-vDetallado: muestra el progreso archivo por archivo durante la transferencia
-zCompresión: reduce los datos transferidos a través de la red
–deleteElimina archivos en el destino que ya no existen en el origen
–progressMuestra el progreso en tiempo real para cada archivo
–excludeExcluir archivos específicos o patrones (p. ej., –exclude ‘*.log’)
-n o –dry-runSimula 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

disruptive

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/destination

2) 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)

disruptive

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_host

Se abrirá un prompt SFTP (sftp>), desde el cual puede ejecutar los siguientes comandos:

2) Comandos SFTP Esenciales

ComandoDescripción
lsListar archivos en el directorio remoto actual
llsListar archivos en el directorio local actual
cd /remote/pathCambiar el directorio remoto
lcd /local/pathCambiar el directorio local
put /local/file /remote/destinationCargar un archivo al servidor remoto
get /remote/file /local/destinationDescargar un archivo del servidor remoto
mput *.txtCargar múltiples archivos que coincidan con un patrón
mget *.logDescargar múltiples archivos que coincidan con un patrón
mkdir /remote/newdirCrear un directorio en el servidor remoto
rm /remote/fileEliminar un archivo en el servidor remoto
exit o quitCerrar la sesión SFTP

3) Conectar a un Puerto SSH Personalizado a través de SFTP

sftp -P 2222 username@remote_host

4) 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

disruptive

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_host

Esto 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_host

Si 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>&1

Solución de problemas comunes de transferencia de archivos SSH

disruptive

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

disruptive

CaracterísticaSCPrsyncSFTP
Facilidad de uso⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Transferencias delta
Sincronización de directorios✅ (recursivo)✅ (con –delete)✅ (manual)
Modo interactivo
Automatización✅ (con scripts)
Eficiencia de ancho de bandaBajaAltaBaja
Mejor paraTransferencias rápidas puntualesCopias de seguridad y sincronizaciónNavegación interactiva

Protegiendo tus transferencias de archivos SSH: Mejores prácticas

disruptive

Independientemente de qué herramienta uses, sigue estas mejores prácticas de seguridad para proteger tus servidores y datos:

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

Preguntas Frecuentes

disruptive

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

disruptive

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.