Qué es scp y cómo copiar archivos por SSH
Autor: Redacción Domeny.ForSale Publicado
En breve: En informática, SCP (Secure Copy Protocol) designa un método para copiar archivos de forma segura entre equipos, y scp es el comando que permite realizar esa transferencia mediante SSH, una conexión cifrada con un sistema remoto. Puedes usarlo para enviar un archivo a un servidor o descargar una copia de seguridad a tu equipo. Las versiones actuales de scp del paquete OpenSSH utilizan de forma predeterminada el protocolo SFTP en lugar del antiguo protocolo SCP. Las siglas también aparecen en el nombre del universo ficticio SCP Foundation: es otro significado, ajeno a la transferencia de datos.
¿Para qué sirve scp y cómo funciona?
El comando scp copia datos entre el origen y el destino indicados. Entre sus usos habituales están enviar un archivo comprimido de un sitio web al servidor, descargar registros para analizarlos o copiar un archivo de configuración. Se ejecuta en el terminal, indicando las rutas y los datos de acceso al equipo remoto.
SSH cifra la conexión y permite la autenticación, es decir, verificar la identidad de las partes que se conectan. Normalmente, el usuario inicia sesión con una contraseña o una clave SSH. Esta última consta de dos elementos relacionados: la clave pública se coloca en el servidor, mientras que la privada se conserva en el equipo del usuario y se protege para que nadie más pueda acceder a ella.
Sin embargo, cifrar la transferencia no significa que el archivo también quede cifrado al guardarse en el disco. scp tampoco es un sistema completo de copias de seguridad: por sí solo no proporciona un historial de versiones, rotación de archivos de respaldo ni pruebas de recuperación de datos.
¿Qué necesitas preparar antes de copiar?
En el equipo desde el que inicias la transferencia necesitas un cliente scp. Está disponible en muchas instalaciones de Linux y macOS, y en Windows puedes utilizar el cliente OpenSSH. Puedes comprobar la presencia de este último con el comando ssh -V, y la disponibilidad de scp ejecutando scp sin argumentos; el programa debería mostrar información sobre su sintaxis.
En el servidor debe estar funcionando SSH y, para el modo predeterminado de las versiones actuales de OpenSSH, también debe estar disponible SFTP. Necesitas la dirección del servidor, el nombre de usuario, un método de inicio de sesión y permisos para el directorio correspondiente. Una cuenta que solo permita usar FTP no basta.
Antes de la primera transferencia puedes comprobar el inicio de sesión:
La dirección 192.0.2.10 es un ejemplo: sustitúyela por la de tu servidor. En la primera conexión, el cliente puede pedirte que confirmes la huella de la clave del host, es decir, el identificador de la clave del servidor. Compárala con la información facilitada por el administrador o que figure en un panel de confianza del proveedor, en lugar de aceptarla automáticamente.
Cómo usar scp: tres ejemplos prácticos
La estructura básica del comando es:
scp [opciones] origen destino
Una ubicación remota suele escribirse como usuario@servidor:ruta. Los dos puntos separan la dirección del servidor de la ruta del archivo o directorio.
Enviar un archivo al servidor: supongamos que en el directorio actual tienes el archivo comprimido sitio.tar.gz y quieres colocarlo en el directorio personal de la usuaria Ana:
scp strona.tar.gz [email protected]:/home/ana/
Descargar un archivo del servidor: invierte el orden del origen y el destino. El punto final representa el directorio actual del equipo en el que ejecutas el comando:
scp [email protected]:/home/ana/backup.zip .
Enviar un directorio completo: añade la opción -r, que activa la copia recursiva, es decir, incluye el contenido del directorio y de sus subdirectorios:
scp -r ./fotos [email protected]:/home/ana/
Si SSH utiliza un puerto distinto del predeterminado, el 22, indícalo con -P en mayúscula, por ejemplo scp -P 2222 archivo.txt [email protected]:/home/ana/. La opción -p en minúscula tiene otro significado: conserva las marcas de tiempo de acceso y modificación, así como los bits de permisos del archivo. Escribe entre comillas las rutas locales que contengan espacios, por ejemplo "informe anual.pdf".
¿Cuándo elegir scp, SFTP o rsync?
Los nombres SCP y SFTP a veces se confunden porque ambas soluciones utilizan SSH. Históricamente eran protocolos de transferencia de archivos diferentes. Desde OpenSSH 9.0, el comando scp realiza las transferencias mediante SFTP de forma predeterminada, aunque mantiene la sintaxis habitual.
En la práctica, elige la herramienta según la tarea:
scp: para enviar o descargar un archivo de forma puntual cuando conoces su ruta.- Cliente SFTP: cuando quieres explorar directorios remotos, seleccionar archivos y gestionarlos de forma interactiva, también mediante un programa con interfaz gráfica.
rsyncmediante SSH: para copiar directorios de forma recurrente y transferir los cambios en lugar de volver a copiar todos los datos. Normalmente requiere quersyncesté disponible en ambos equipos.
La opción -O de OpenSSH fuerza el uso del antiguo protocolo SCP. Úsala para resolver un problema concreto de compatibilidad, no como ajuste predeterminado. Puedes consultar las opciones admitidas y el comportamiento de tu versión en la documentación local man scp o en la documentación oficial de OpenSSH.
Errores habituales y una primera transferencia segura
El mensaje Permission denied puede indicar un error de inicio de sesión o la falta de permisos para acceder al archivo o directorio. Si el inicio de sesión mediante ssh funciona, comprueba que el usuario remoto tenga permiso para escribir en el destino. No such file or directory suele indicar una ruta incorrecta, mientras que Connection refused puede deberse a un puerto incorrecto o a que el servicio SSH no esté funcionando.
scp puede sobrescribir un archivo existente sin preguntar. Antes de enviar datos, comprueba el orden de los argumentos y el contenido del directorio de destino. Recuerda también que una ruta remota relativa suele interpretarse a partir del directorio personal del usuario, no del directorio abierto en tu equipo.
Haz la primera prueba con un archivo pequeño y sin importancia, y envíalo a un directorio separado. Al terminar, comprueba que esté allí y revisa su contenido; solo entonces utiliza el mismo procedimiento con los datos que realmente quieres transferir.
Consulta también: ¿Qué es AGI?
