19 abr 2020

Como crear claves SSH para emplear en scripts

Buenos días, durante esta temporada he estado ocupado con el proyecto final de ASIR (Administración de Sistemas Informáticos en Red) en el cuál me encuentro trabajando en un modelo de SOC o de homelab virtualizado.

Entre algunos de los puntos de este proyecto se encuentra el generar una clave SSH y poder autenticarnos en un servidor con esta, es decir, prescindiríamos de contraseñas por lo que puede ser bastante útil a la hora de crear scripts que necesiten acceder a servidores externos vía SSH.

Por ello, en la entrada de hoy os dejo el procedimiento que he seguido para realizar todo este proceso que, como podréis ver, se encuentra bajo el contexto de realizar copias de seguridad empleando los certificados por lo que veréis como formatear discos y montarlos dentro de un sistema.


Antes de nada resaltar que todos los pasos, salvo que indique lo contrario, se hacen con el usuario root o administrador.

Lo primero será tener definido un directorio donde almacenar las copias de seguridad. Para ello, he querido emplear un disco duro que he montado dentro del sistema de ficheros de un Ubuntu Server. Para hacer esto, estando el disco en /dev/sdb he ejecutado el comando mkfs.ext4 /dev/sdb para darle un formato inicial al disco duro.


A continuación, he creado un nuevo directorio en "/" que he llamado backups. Para crearlo, tan solo hay que ejecutar el comando mkdir /backups. Posteriormente, para montar el disco duro dentro del servidor hay que ejecutar el comando mount /dev/sdb /backups. Yo opté por concatenar los dos comandos en uno solo empleado && entre ambos comandos.


Para el siguiente paso vamos a generar una llave SSH que se almacenará en el servidor de donde queremos realizar la copia de seguridad para no andar poniendo la clave del servidor cada vez que se ejecute el script. Para ello, crearemos un directorio en la raíz que llamaremos ssh_keys. Una vez creado, ejecutaremos el comando ssh-keygen -t rsa -f /ssh_keys/{nombre_equipo}. Donde nombre_equipo se recomienda poner el nombre del servidor del cuál vamos a hacer las copias de seguridad. En uno de los pasos nos pedirá definir una clave pero dejaremos el campo vacío ya que sino, para usar esta llave, se deberá indicar siempre la clave.


Una vez tengamos la clave generada, la pasamos al servidor que enviará los datos para la copia de seguridad al directorio /home/.ssh/authorized_keys para que la considere como su clave de confianza. Para ello, emplearemos el comando scp /ssh_keys/clave.pub usuario@atenea.pasir1920.local donde clave.pub es la llave que generamos antes, usuario es un usuario del servidor externo y atenea.pasir1920.local es la dirección IP o FQDN del servidor externo.

Con la clave enviada, nos conectaremos vía SSH al servidor externo (con la contraseña todavía) donde, en el caso de no existir, crearemos en el directorio $HOME el subdirectorio .ssh. Para ello, ejecutamos el comando mkdir $HOME/.ssh.

Ya teniendo el directorio creado, ejecutamos el comando cat $HOME/clave.pub >> $HOME/.ssh/authorized_keys para añadir al fichero authorized_keys la clave que generamos anteriormente. Finalmente, establecemos los permisos a los directorios para que no haya problema a la hora de leer las claves. Para ello, empleamos los siguientes comandos:

chmod 0700 $HOME/.ssh
chmod 0600 $HOME/.ssh/authorized_keys

Finalmente salimos del servidor y volvemos a entrar pero empleando el certificado que generamos anteriormente. Para ello, vamos a emplear el comando ssh usuario@equipo -i /ssh_keys/clave

 

Y con esto sería todo. Espero que os haya servido de ayuda y cualquier duda la podéis dejar en los comentarios de esta entrada.

Manuel Jesús A.K.A. 3m4nu311

No hay comentarios:

Publicar un comentario