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: