Comando scp en Linux | Copiando archivos entre equipos

comando-scp
comando-scp

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... DESTINO

Explicació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ónQué haceDetalle importante
-rCopia directorios recursivamente.Sigue los enlaces simbólicos que encuentra en el recorrido; revisa qué rutas se copiarán.
-P PUERTOConecta al puerto SSH indicado.La P es mayúscula; la opción -p tiene otra función.
-i CLAVEUsa el archivo de identidad indicado.Protege la clave privada y comprueba que la cuenta remota la acepta.
-pConserva tiempos de modificación/acceso y modos del archivo.No cambia el propietario del archivo remoto.
-3Transfiere entre dos servidores pasando los datos por tu equipo.Puede consumir ancho de banda y espacio de red locales.
-OFuerza 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.log

Tambié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:

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *