Generación de una clave ssh

Muchas veces necesitamos conectarnos por ssh a algún servidor que mantenemos o a algún servicio como GitHub, BitBucket, etc., para lo cual resulta muy útil tener una llave ssh de manera que no tengamos que estar ingresando nuestra clave cada vez que queremos acceder al sistema.

Para generar una clave ssh desde un sistema Linux no tenemos más que ejecutar el siguiente comando:

$ ssh-keygen -t rsa -b 4096 -C "your_email@your_company.com" -f my_key -N my_passphrase

donde indicamos el tipo de cifrado usado para generar la clave (-t rsa), el tamaño de la clave en número de bits (-b 4096), un comentario (que puede ser nuestra dirección de correo que nos sirva para identificar a quien pertenece nuestra clave pública), y además podemos indicarle el nombre del fichero a crear con la opción -f my_key (si no indicamos un nombre de fichero, por defecto se nos crearán como ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub) y una passphrase (-N my_passphrase), si queremos que nos la pida para poder usar la llave (no es necesario).

Una vez hemos ejecutado este comando, se nos habrán creado dos ficheros distintos: my_key (clave privada) y my_key.pub (clave pública).

Lo siguiente que debemos hacer es añadir nuestra clave pública al sistema al que nos queremos conectar. Para el caso de un servidor Linux, debemos agregar el contenido de la clave pública al fichero ~/.ssh/authorized_keys (el cual debería tener permisos 600) del usuario al que nos queremos conectar.

Si dicho fichero no existe, ejecutaremos los siguientes comandos en el servidor al que nos queremos conectar y con el usuario correspondiente:

$ touch ~/.ssh/authorized_keys

$ chmod 600 ~/.ssh/authorized_keys

Y a continuación agregaremos el contenido de nuestra clave pública:

$ cat my_key.pub >> ~/.ssh/authorized_keys

Una vez hemos agregado la clave pública, reiniciamos el servicio ssh ($ service ssh restart) y ya podríamos conectarnos a nuestro servidor por ssh usando la clave mediante el siguiente comando:

$ ssh -i my_key my_user@my_server

La opción -i sirve para indicar la llave que queremos usar para conectarnos al servidor remoto. Pero podemos evitar tener que usar esta opción si añadimos nuestra clave al ssh-agent.

Para ello, lo primero que tenemos que hacer es iniciar el agente ssh en segundo plano:

$ eval "$(ssh-agent -s)"

Y a continuación, añadir nuestra clave privada al agente:

$ ssh-add my_key

De esta manera, ya no necesitaremos utilizar la opción -i para conectarnos al servidor, ya que el agente se encargará de coger la llave correcta.

$ ssh my_user@my_server

Categorías