Copiar ficheros a través de SSH con el comando «scp»

Para todos aquellos que trabajamos con servidores Linux, el protocolo SSH es fundamental, ya que permite establecer conexiones seguras con máquinas remotas sin poner en riesgo la seguridad de estas.

Otra de las tareas muy habituales, cuando estamos trabajando con máquinas remotas, es el poder copiar ficheros entre nuestro equipo local y el servidor, ya sea en un sentido o en otro. Y aquí es donde entra en juego el comando «scp«, ya que este permite copiar ficheros (como lo haría el comando «cp») pero a través de un protocolo seguro (SSH) entre dos máquinas (ya sea en dirección local-remota o remota-remota).

La sintaxis de uso básica de «scp» es muy sencilla, ya que solo tenemos que indicarle el origen y el destino:

scp user_origen@host_origen:/path/file user_destino@host_destino:/path/file

Donde, si os fijáis, tenemos por un lado (en el origen) el user_origen y host_origen, y por otro lado (en el destino) tenemos el user_destino y host_destino. Evidentemente, esto quiere decir que, teniendo los permisos necesarios en las máquinas origen y destino, podemos copiar ficheros de un usuario en una máquina como otro usuario en otra máquina.

Vamos a ver un ejemplo práctico: imaginemos que tenemos en nuestro ordenador portátil una carpeta dentro del escritorio, que queremos copiar al «home» de nuestra cuenta en el servidor. Para ello haríamos:

scp -pr ~/Escritorio/carpeta david@1.2.3.4:/home/david/

El parámetro -p permite conservar las horas de modificación/acceso y los modos de las carpetas/ficheros del origen en el destino; y el parámetro -r hace que la copia sea recursiva, es decir, que copie todo lo que se encuentra en el directorio «carpeta» y por debajo de él.

Al ejecutar este comando, la máquina remota (1.2.3.4) os pedirá la contraseña de «david» en esa máquina, como es de esperar.

Pero, si creáis un par de claves pública/privada para acceder vía SSH sin introducir la clave, como ya vimos en un artículo anterior, la cosa se simplifica bastante.

Como veis, esta es una forma muy práctica de copiar ficheros de una máquina a otra de forma segura (SSH).

Y, por supuesto, este comando «scp» tiene más parámetros y opciones que pueden seros útiles, dependiendo del caso. Para ello, recordad que podéis consultarlas todas haciendo:

man scp

… en la línea de comandos.

Espero que os haya sido útil :-)