Copiar archivos entre diferentes usuarios y máquinas con SCP

Copiar archivos entre diferentes usuarios y máquinas con SCP

Aprende a copiar archivos entre usuarios y máquinas remotas usando SCP, con ejemplos reales, comprobación de resultados y resolución de errores comunes de permisos y conectividad.

FECHA:
ACTUALIZADO:
AUTOR:Jorge Beneyto Castelló
LECTURA:5 MINUTOS DE LECTURA

¿Te has encontrado alguna vez con que necesitas mover un archivo de un usuario a otro en un servidor remoto y no sabes cómo hacerlo sin perder tiempo con el gestor de archivos? SCP (Secure Copy Protocol) es la herramienta que te permite copiar archivos entre máquinas de forma segura a través de SSH. En esta guía vemos cómo usarlo con ejemplos reales, incluyendo cómo copiar entre diferentes usuarios y cambiar el nombre del archivo en destino.

🤔 ¿Qué vamos a conseguir?

  • Copiar un archivo local a un servidor remoto con scp.
  • Copiar entre diferentes usuarios en la misma máquina o en máquinas distintas.
  • Renombrar el archivo en destino durante la copia.
  • Comprobar que la copia se ha realizado correctamente.
  • Resolver los errores típicos de permisos y conectividad.

🧰 Prerrequisitos

  • SSH instalado y funcionando en el servidor (si no lo tienes, consulta Formas de conectarse por SSH).
  • La dirección IP del servidor y un usuario con acceso SSH.
  • Conocimientos básicos de terminal.
  • El cliente SSH (ssh y scp vienen instalados por defecto en Linux y macOS; en Windows con WSL también).

🛠️ El comando SCP: sintaxis básica

SCP funciona sobre SSH, así que necesitas las mismas credenciales (usuario, IP o hostname y contraseña). La sintaxis es:

scp [opciones] origen usuario@servidor:destino

Veamos los escenarios más comunes:

Copiar un archivo local al servidor remoto

scp archivo.txt jorge@192.168.101.1:/home/jorge/

Esto copia archivo.txt del equipo local a la carpeta /home/jorge/ del servidor 192.168.101.1 con el usuario jorge.

Copiar un archivo entre dos usuarios en el servidor

Imagina que estás en el usuario usu1 y necesitas copiar un archivo que está en la carpeta de usu2 a una carpeta del servidor. La clave es indicar el usuario correcto en cada lado:

scp /home/usu1/hola.txt jorge@192.168.101.1:/home/jorge/Música/canço.txt

En este ejemplo:

  • /home/usu1/hola.txt es el archivo de origen (en el equipo local, bajo el usuario usu1).
  • jorge@192.168.101.1 es el usuario y servidor de destino.
  • /home/jorge/Música/canço.txt es la ruta completa de destino con el nombre renombrado a canço.txt.
Ejecución del comando SCP para copiar archivos entre usuarios

🚀 Opciones avanzadas de SCP

Copiar una carpeta completa (recursivo)

Para copiar una carpeta entera con todo su contenido, usa -r:

scp -r /home/usu1/documentos jorge@192.168.101.1:/home/jorge/Documentos/

Especificar un puerto SSH distinto

Si el servidor SSH no escucha en el puerto 22 (típico en producción), usa -P (mayúscula):

scp -P 2222 archivo.txt jorge@192.168.101.1:/home/jorge/

Preservar permisos y fechas

El flag -p conserva los permisos, fechas de modificación y tamaño del archivo original:

scp -p archivo.txt jorge@192.168.101.1:/home/jorge/

Usar una clave SSH en lugar de contraseña

Si ya tienes una clave SSH configurada, SCP la usa automáticamente sin pedir contraseña:

scp -i ~/.ssh/mi_clave_privada archivo.txt jorge@192.168.101.1:/home/jorge/

🧪 Comprobar que funciona

Una vez ejecutado el comando SCP, verifica que el archivo llegó correctamente:

# En el servidor (por SSH)
ssh jorge@192.168.101.1 'ls -la /home/jorge/Música/canço.txt'

# Verificar el contenido
ssh jorge@192.168.101.1 'cat /home/jorge/Música/canço.txt'

# Verificar el código de salida del comando scp
echo $?

Si el comando anterior devolvió un mensaje de error, revisa la tabla de errores comunes más abajo.

⚠️ Errores comunes

ErrorCausaSolución
Permission denied (publickey,password)Contraseña incorrecta o usuario no válidoRevisa el usuario con whoami en el servidor y verifica la contraseña
No such file or directoryLa ruta de destino no existe en el servidorCrea la carpeta primero: ssh jorge@192.168.101.1 'mkdir -p /home/jorge/Música'
Connection refusedEl servicio SSH no está corriendo en el servidorEn el servidor: sudo systemctl restart ssh y comprueba ss -tlnp | grep :22
Permission denied al escribir en destinoEl usuario no tiene permiso de escritura en la carpeta destinoCambia permisos: chmod 755 /home/jorge/Música o usa una ruta donde tengas escritura
ssh: Could not resolve hostnameIP o hostname mal escrito, o el servidor está apagadoVerifica la IP con ping 192.168.101.1 y que el servidor esté encendido
Connection timed outFirewall bloqueando el puerto SSHAbre el puerto: sudo ufw allow 22/tcp en el servidor

🪜 Siguiente nivel

Una vez domines SCP para copias puntuales, la escalera natural es:

  1. Clave pública/privada — olvídate de las contraseñas y automatiza las copias: Conexión mediante clave pública privada.
  2. rsync — sincroniza carpetas completas de forma eficiente, transfiriendo solo los cambios: una alternativa más potente a SCP para copias repetidas.
  3. Montar un sistema de archivos remoto con sshfs para trabajar con archivos remotos como si fueran locales.
  4. Automatizar respaldos con scp o rsync en un cron job o script programado.

🔗 Enlaces y recursos

COMPARTIR:
COMENTARIOS:

📋 Contenido