scp copia archivos entre equipos a través de una conexión SSH. Puedes enviar un archivo desde tu ordenador a un servidor, descargarlo desde el servidor o copiar una carpeta completa. En versiones de OpenSSH 9.0 y posteriores, el transporte predeterminado es SFTP aunque el comando siga llamándose scp; la opción de protocolo antiguo existe para compatibilidad.
Para autenticarte, scp usa los mecanismos SSH configurados para la cuenta, como una clave o una contraseña. Antes de transferir datos a un servidor nuevo, confirma su identidad mediante la huella de la clave del host; no aceptes una clave desconocida sin verificarla.
👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.
🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.
Sintaxis básica del comando scp
La orden recibe uno o más orígenes y un destino. Una ruta remota se escribe como usuario, equipo y ruta separados por dos puntos:
scp [OPCIONES] ORIGEN... DESTINOExplicación de la sintaxis
ORIGEN es el archivo o directorio que se copia. DESTINO puede ser una ruta local o una ruta remota con el formato usuario@servidor:/ruta/. El orden importa: si el origen es local y el destino remoto, subes el archivo; si el origen es remoto y el destino local, lo descargas.
Usa nombres de host y rutas a los que tengas acceso. El directorio remoto debe existir y la cuenta necesita permiso para escribir allí al subir, o permiso de lectura al descargar.
Opciones útiles de scp
| Opción | Qué hace | Detalle importante |
|---|---|---|
| -r | Copia directorios recursivamente. | Sigue los enlaces simbólicos que encuentra en el recorrido; revisa qué rutas se copiarán. |
| -P PUERTO | Conecta al puerto SSH indicado. | La P es mayúscula; la opción -p tiene otra función. |
| -i CLAVE | Usa el archivo de identidad indicado. | Protege la clave privada y comprueba que la cuenta remota la acepta. |
| -p | Conserva tiempos de modificación/acceso y modos del archivo. | No cambia el propietario del archivo remoto. |
| -3 | Transfiere entre dos servidores pasando los datos por tu equipo. | Puede consumir ancho de banda y espacio de red locales. |
| -O | Fuerza el protocolo SCP heredado. | Úsalo solo si el servidor o un patrón antiguo lo requiere. |
Subir un archivo al servidor
Para enviar un informe a un directorio remoto, pon primero el archivo local y después la ruta del servidor:
scp ./informe.pdf [email protected]:/srv/documentos/Sustituye el usuario, el host y el directorio por los de tu servidor. Si se solicita autenticación, la realizará SSH. Si recibes un error de permisos, verifica que el directorio remoto existe y que esa cuenta puede escribir en él.
Descargar un archivo del servidor
Para copiar un archivo remoto al directorio actual, invierte el orden de origen y destino:
scp [email protected]:/var/log/app.log ./app.logTambién puedes elegir un destino local explícito. Si la transferencia termina sin error pero no ves el archivo, comprueba la ruta desde la que ejecutaste la orden y el nombre de salida.
Copiar una carpeta y usar otro puerto o una clave
Añade -r para incluir un directorio y sus subdirectorios. Si el servidor SSH usa un puerto distinto del predeterminado, indica -P; para una clave concreta, usa -i:
scp -r ./sitio [email protected]:/srv/www/
scp -P 2222 -i ~/.ssh/id_ed25519 ./respaldo.tar.gz [email protected]:/srv/backups/La primera línea copia la carpeta sitio; la segunda sube un archivo usando el puerto 2222 y la identidad indicada. Como -r sigue los enlaces simbólicos, comprueba que no incorpore directorios fuera del proyecto o datos que no querías transferir.
Copiar entre dos servidores remotos
Puedes indicar una ruta remota como origen y otra como destino. Por defecto, la transferencia pasa por tu equipo local; esto puede ser lento si los archivos son grandes o tu conexión tiene poco ancho de banda:
scp [email protected]:/srv/datos.tar.gz \
[email protected]:/srv/backups/La forma exacta de autenticar ambos extremos depende de la configuración SSH. Para operaciones frecuentes, directorios grandes o transferencias reanudables, evalúa rsync sobre SSH en vez de repetir copias completas.
Comprobar la transferencia
Tras copiar, confirma que el archivo existe y compara su tamaño. Cuando sea importante comprobar que los bytes coinciden, calcula una suma de verificación en ambos extremos:
ssh [email protected] 'ls -lh /srv/documentos/informe.pdf'
sha256sum ./informe.pdf
ssh [email protected] 'sha256sum /srv/documentos/informe.pdf'Las dos sumas SHA-256 deben coincidir. Si el servidor no tiene esa herramienta, utiliza una suma disponible en ambos sistemas o compara el contenido mediante un método adecuado a tu entorno.
Errores comunes al usar scp
- Permission denied: comprueba el usuario, la clave configurada, los permisos del archivo local y los permisos de lectura o escritura de la ruta remota.
- No such file or directory: revisa la ruta en el extremo correcto: la ruta antes de los dos puntos es local si no tiene host; después de los dos puntos es remota.
- Connection timed out o connection refused: confirma que el servidor está accesible, que SSH escucha en ese puerto y que la red o firewall permite la conexión. Si cambia el puerto, usa -P mayúscula.
- La carpeta no se copia completa: añade -r para recorrer sus subdirectorios y revisa los enlaces simbólicos incluidos.
- Host key verification failed: compara la huella del servidor por un canal de confianza. No desactives la comprobación para evitar el aviso.
- El servidor antiguo no acepta la transferencia: confirma primero qué protocolo soporta. Solo si necesitas compatibilidad, prueba la opción -O para seleccionar SCP heredado.
Comandos relacionados
- rsync, para sincronizar directorios y evitar reenviar archivos sin cambios.
- tar, para agrupar archivos antes de transferirlos.
- Guía de comandos Linux, para consultar otras herramientas de terminal.
Referencias oficiales
Consulta la página de manual de scp de OpenBSD o el manual de OpenSSH en Debian para revisar opciones y compatibilidad de la versión instalada.
Vídeo: transferir archivos con scp
El siguiente Short muestra una transferencia breve entre equipos. Para usarlo en otro servidor, sustituye las rutas y el usuario, verifica la clave del host y confirma el archivo recibido:

