scp entre maquinas

23 de febrero de 2009

Existen varias formas de copiar archivos entre dos maquinas Linux: rsync, nfs, samba o como en este caso scp.
SCP es una tool para copiar archivos de forma segura entre dos maquinas utilizando el protocolo SSH.

El siguiente ejemplo copia de forma segura el archivo "backup.tar.gz" de la maquina srv1 a la maquina srv2 y lo deja en la carpeta /tmp.

[root@srv1 tmp]# scp backup.tar.gz srv2.miempresa.com:/tmp
The authenticity of host 'srv2.miempresa.com (10.1.2.34)' can't be established.
RSA key fingerprint is e9:40:f0:67:6b:4c:3b:03:ad:22:9f:38:98:51:56:29.
Are you sure you want to continue connecting (yes/no)? 

root@srv2.miempresa.com's password: 
backup.tar.gz      100%    0     0.0KB/s   00:00  

scp es de lo más fácil de utilizar y seguro, pues a diferencia de nfs o samba no tienes que configurar nada de especial, ni dar permisos especiales ni nada. Normalmente todos los servidores Linux tienen levantado el daemon de SSH para la gestión remota, por tanto scp hará uso de ello.

El problema es cómo hacer que scp sea automático y no pida el intercambio de llaves, ni la contraseña cada vez que lancemos el comando contra un servidor. Esto puede ser necesario si queremos programar scp en un cron para que copie archivos de un servidor a otro de forma automática.

+ Generamos unas llaves de autentificación 1024 bits.
[root@srv1 tmp]# ssh-keygen -t rsa -b 1024
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
10:cc:98:90:5b:7f:9e:ef:bb:7a:f7:6c:d2:a2:ca:7d root@srv1.miempresa.com

+ Copiamos la clave publica al servidor de destino. En nuestro caso “srv2”.

[root@srv1 tmp]# scp /root/.ssh/id_rsa.pub srv2.miempresa.com:/root/.ssh/
root@srv2.miempresa.com password: 
id_rsa.pub          100%  232     0.2KB/s   00:00

+ En la maquina remota renombramos el archivo copiado y damos los permisos oportunos.

[root@srv2 .ssh]# cp id_rsa.pub authorized_keys
[root@srv2 .ssh]# cd
[root@srv2 ~]# chmod go-w . .ssh .ssh/authorized_keys 

+ Ahora como ya hemos intercambiado las llaves entre estos dos servidores ya podemos entrar de uno al otro sin necesidad de password. Podemos utilizar tanto ssh como scp.

[root@srv1 tmp]# ssh srv2.miempresa.com
Last login: Fri Feb 20 22:00:56 2009 from srv1.miempresa.com
[root@srv2 ~]#