Home » Tecnología » SCP, automatizar las copias de archivos

SCP, automatizar las copias de archivos

Publicado en: Tecnología

El comando scp, comentado con anterioridad en toda su extensión, permite la copia de archivos entre dos máquinas conectadas en red, ya sea local o no, utilizando el puerto 22 de SSH. De este modo podemos copiar archivos a gran velocidad, mucho más rápido que ftp, y de manera segura, ya que nuestros datos viajarán encriptados.

Y eso es todo? Desde luego que no. Además podemos crear una llave encriptada SSH en el equipo remoto al que queremos conectarnos, y hacer que en una sola sentencia copiemos todos los archivos que queramos sin que ssh nos pida cada vez la contraseña del usuario para poder copiar tal o cual archivo o carpeta.

Generar la llave encriptada SSH
En nuestro equipo ejecutamos lo siguiente en Terminal:

host_local:/ admin$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (~/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_dsa.
Your public key has been saved in ~/.ssh/id_dsa.pub.
The key fingerprint is:
1e:73:59:96:25:93:3f:8b:50:39:81:9e:e3:4a:a8:aa
host_local:/ admin
host_local:/ admin$

La llave se guarda en el subdirectorio .ssh de la Home del Usuario, en nuestro caso admin. La frase se puede dejar en blanco, dando un retorno de carro.

El usuario, admin, es el usuario administrador de nuestra máquina, la del primer usuario que configuramos al instalar el MacOS X o cualquier otro usuario administrador del sistema.

Directorio .ssh
Si en el equipo remoto no existe el directorio .ssh en el directorio raiz del disco duro de arranque, lo creamos:

host_remoto:/ root$ mkdir .ssh

y le asignamos permisos:

host_remoto:/ root$ chmod 700 .ssh

empleamos el usuario root, superusuario, de la máquina remota, o bien un usuario administrador.

Copiar la llave pública
Una vez creadas en local la llave pública y la privada, debemos copiar la llave pública en el equipo remoto

host_local:/ admin$ scp id_dsa.pub root@<ip_equipo_remoto>:.ssh/public-key.tmp

Activar la llave pública
Una vez copiada en la máquina remota, debemos colocarla en su sitio para que funcione adecuadamente, para eso añadimos la llave pública temporal a la lista de llaves que estuvieran guardadas con anterioridad:

host_remoto:/ root$ cat ~/.ssh/public-key.tmp>> authorized_keys

A partir de este momento se puede ejecutar SCP sin que pida confirmación de contraseña por cada comando ssh que hagamos, añadiendo la opción -B al comando scp en Terminal, para verlo más claro, un pequeño ejemplo:

scp -r -B root@<ip_equipo_remoto>:/ruta_directorio_1 root@<ip_equipo_remoto>:/ruta_directorio_2 root@<ip_equipo_remoto>:/ruta_directorio_3

SaludoX

  1. […] dos Macs, primero con una visión genérica de SSH y después con el tema más concreto de ‘SCP, automatizar las copias de archivos‘. Y nada cambia, es un procedimiento idéntico para cualquier Unix y distribución […]