TOP

Uso de SCP en Shell Scripts sin Password

Más una vez  nos hemos visto en la necesidad de realizar un script en el que hace falta conectarte en remoto a otro equipo bien por SSH, bien por SCP para la copia de ficheros y ver que al ejecutar dicho script nos pedía la contraseña del equipo remoto y dar al traste con el funcionamiento deseado (completamente automático). Pues bien, he aquí un pequeño truco para solventar el problema.

El método consiste en usar claves RSA y conexiones ssh/scp sin contraseña, mucho más seguro que guardar a fuego un password en un fichero.

Para ello es preferible crearnos un usuario destinado a estos menesteres, generarle un par de claves RSA y no usar el usuario root para evitarnos posibles problemas. Estando logueados con el usuario en cuestión, ejecutamos lo siguiente en ambos equipos (entre los que queremos establecer la conexión):

system@N1:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/system/.ssh/id_rsa):
Created directory '/home/system/.ssh'.
Enter passphrase (empty for no passphrase):




Por defecto, nos genera las claves  en /home/*USUARIO*/.ssh/, donde *USUARIO* es el usuario que ha ejecutado el comando. Como queremos evitar tener que meter contraseña, dejamos el passphrase en blanco.

Este proceso nos habrá generado dos ficheros con las claves pública y privada para nuestro usuario. Ahora lo que tenemos que hacer es intercambiar las claves públicas entre nuestros equipos para permitir que se comuniquen sin necesidad de contraseña, copiamos el contenido del archivo .pub en el fichero authorized_keys que crearemos en /home/*USUARIO*/.ssh/ de la otra máquina y con esto habilitaremos el acceso sin crontraseañ por ssh para *USUARIO*.

Ya estamos en disposición de poder utilizar en nuestros scripts el nuevo mecanismo.
Para ello, hacemos uso de la opción -i que nos ofrece SCP, mediante la cual le podemos pasar un fichero "identity file", de donde tomará la clave pública de autenticación. El comando que metemos en nuestro script quedaría tal que así:

scp -i /*USUARIO*/.ssh/id_rsa *USUARIO*@IP:/home/fichero /tmp/

Espero que sea de utilidad,
saludos,
Víctor.

0 comentarios:

Publicar un comentario