En la administración de sistemas y la transferencia de archivos, el comando scp (Secure Copy Protocol) es una herramienta fundamental. Si estás empezando en la línea de comandos, scp pronto se convertirá en tu mejor aliado para mover archivos de forma segura entre tu equipo y un servidor. En esta guía verás qué es, su sintaxis, y ejemplos prácticos para cada caso: copiar archivos y carpetas, cambiar el puerto, transferir entre dos servidores y más.
¿Qué es SCP?
scp es un comando de sistemas Unix y Unix-like que permite la transferencia segura de archivos entre equipos locales y remotos a través de SSH (Secure Shell). Utiliza el mismo cifrado y autenticación que SSH, por lo que tus datos viajan protegidos incluso a través de redes inseguras como Internet.
Sintaxis básica de scp
La estructura general del comando es sencilla:
scp [opciones] origen destino
origen: la ubicación del archivo o directorio que quieres transferir. Puede ser local o remota.destino: la ubicación a la que quieres transferirlo. Igual que el origen, puede ser local o remota.
Una ubicación remota se escribe con el formato usuario@servidor:/ruta. Los dos puntos (:) son los que separan el servidor de la ruta y los que le dicen a scp que ese extremo es remoto.
Ejemplos prácticos de scp
Copiar un archivo local a un servidor remoto
scp archivo.txt usuario@servidor:/ruta/destino
Copia archivo.txt al servidor remoto en /ruta/destino, autenticándote como usuario.
Copiar un archivo remoto a tu equipo local
Solo hay que invertir el orden de origen y destino:
scp usuario@servidor:/ruta/archivo_remoto.txt /ruta/destino_local
Un punto (.) como destino copia el archivo en el directorio en el que te encuentras.
Copiar una carpeta completa (-r)
Para copiar un directorio y todo su contenido de forma recursiva, usa la opción -r:
scp -r mi_carpeta usuario@servidor:/ruta/destino
Copiar varios archivos a la vez
scp archivo1.txt archivo2.txt usuario@servidor:/ruta/destino
Copiar entre dos servidores remotos
También puedes transferir directamente de un servidor a otro sin descargar el archivo a tu equipo:
scp usuario1@servidor1:/ruta/archivo.txt usuario2@servidor2:/ruta/destino
Cómo cambiar el puerto en scp (-P)
Si el servidor SSH no escucha en el puerto estándar (22), debes indicar el puerto con la opción -P (en mayúscula, ojo: en ssh es -p en minúscula). Por ejemplo, para un servidor SSH en el puerto 2222:
scp -P 2222 archivo.txt usuario@servidor:/ruta/destino
La opción -P siempre va antes del origen y el destino. Es uno de los errores más frecuentes: colocarla al final o usar -p en minúscula (que en scp significa «preservar fechas y permisos», no el puerto).
Opciones útiles de scp
| Opción | Qué hace |
|---|---|
-r | Copia directorios de forma recursiva. |
-P puerto | Especifica el puerto SSH (por defecto, 22). |
-p | Preserva fechas de modificación y permisos. |
-C | Comprime los datos durante la transferencia. |
-v | Modo verboso: muestra el detalle para depurar. |
-i clave | Usa una clave SSH privada concreta. |
-l límite | Limita el ancho de banda (en Kbit/s). |
-q | Modo silencioso: oculta la barra de progreso. |
Usar una clave SSH concreta (-i)
scp -i ~/.ssh/mi_clave.pem archivo.txt usuario@servidor:/ruta/destino
Limitar el ancho de banda (-l)
Útil para no saturar la red. El límite se indica en kilobits por segundo. Por ejemplo, para limitar a 1 MB/s (8000 Kbit/s):
scp -l 8000 archivo_grande.iso usuario@servidor:/ruta/destino
scp, sftp o rsync: ¿cuál usar?
- scp: ideal para transferencias rápidas y puntuales de uno o varios archivos. Simple y directo.
- rsync: mejor para sincronizar carpetas grandes o repetir copias, porque solo transfiere lo que ha cambiado y permite reanudar.
- sftp: una sesión interactiva (como un FTP seguro) para navegar por el servidor y subir o bajar archivos a mano.
Nota: desde OpenSSH 9, scp usa internamente el protocolo SFTP, pero la forma de usar el comando sigue siendo exactamente la misma.
Errores comunes con scp
- Usar
-p(minúscula) pensando que cambia el puerto: el puerto es-P(mayúscula). - Olvidar los dos puntos (
:) tras el nombre del servidor: sin ellos,scpcree que es una copia local. - Copiar una carpeta sin la opción
-r: dará el error «not a regular file». - Permisos insuficientes en la ruta de destino: copia en una ruta donde tu usuario pueda escribir.
Preguntas frecuentes
¿Cómo copiar una carpeta con scp?
Añade la opción -r (recursivo) antes del origen: scp -r carpeta usuario@servidor:/ruta. Así se copia el directorio con todo su contenido.
¿Cómo indicar el puerto en scp?
Con la opción -P en mayúscula seguida del número de puerto, colocada antes del origen: scp -P 2222 archivo usuario@servidor:/ruta.
¿Por qué scp me pide contraseña?
Porque usa la misma autenticación que SSH. Si configuras autenticación por clave pública (con ssh-copy-id), scp dejará de pedirte la contraseña en cada transferencia.
Chuleta rápida de scp
# Subir un archivo scp archivo.txt usuario@servidor:/ruta/destino # Descargar un archivo scp usuario@servidor:/ruta/archivo.txt . # Copiar una carpeta completa scp -r carpeta usuario@servidor:/ruta/destino # Cambiar el puerto (mayuscula -P) scp -P 2222 archivo.txt usuario@servidor:/ruta/destino # Con clave SSH y compresion scp -C -i ~/.ssh/mi_clave.pem archivo.txt usuario@servidor:/ruta
Con estos comandos cubres el 99 % de las transferencias del día a día. Guárdate esta chuleta y ten scp siempre a mano en tu terminal.

