Utilización de claves pública y privada

Hoy os voy a decir cómo hacer para que no nos pida contraseña cada vez que conectamos por ssh a nuestra Raspberry Pi.

Para ello haremos uso de nuestras claves pública y privada, que no son más que un par de claves que permiten autenticarnos en otro dispositivo (además de otras muchas más cosas). El funcionamiento es sencillo: generamos nuestro par de claves (una pública y una privada), nos guardamos la privada para nosotros y podemos compartir la clave púbica con cualquier otro equipo donde queramos conectarnos. Haciendo uso de unos algoritmos, el sistema verificará que nuestra clave privada y nuestra clave pública son parte del mismo sistema y nos permitirá entrar.

Así pues, lo primero que hay que hacer es generar nuestro par de claves en caso de que no las tengamos. ¿Cómo saber si las tenemos? fácil, abrimos una ventana de terminal y accedemos al directorio .ssh que cuelga de nuestra carpeta home.

imagen 1

En este caso podéis ver que el único fichero que hay es el que se generó cuando me conecté a la Raspberry y me preguntó si confiaba en ese dispositivo (de ahí que se llame known_hosts). Eso quiere decir que no tengo claves. Para crearlas nada tan sencillo como ejecutar ssh-keygen

imagen 2

Aquí podeis ver que han pasado varias cosas:

  • lo primero es que me preguntó dónde quería alojar los ficheros de claves. He pulsado ENTER para dejar el directorio por defecto, que es .ssh como vimos anteriormente.
  • Lo segundo que me preguntó fue un passphrase. Esta sería una contraseña que habría que utilizar cada vez que hagamos uso de las claves para que, en caso de que la clave privada se vea comprometida por robo o extravío, aun y así no se podría acceder a los sitios de confianza al no disponer del passphrase. Como en mi caso lo que quiero es dejarme de claves, pulso ENTER dos veces y lo dejo en blanco.

Después de eso dice que las claves se han generado correctamente y nos muestra la imagen de nuestra clave. Muy bonita.

Bien, si ahora volvemos a ver qué hay en nuestro directorio .ssh deberíamos ver algo más que antes.

imagen 3

Ahí pueden verse los dos ficheros con las claves: id_rsa, que contiene la clave privada (este fichero no debe ser compartido con nadie), e id_rsa.pub, que contiene la clave pública. Este es el que compartiremos por ahí. ¿Cómo lo hacemos? fácil. Lo primero es mostrar el contenido del fichero público.

imagen 4

Ahora tenemos que seleccionar con el ratón toda esa ristra de caracteres y copiarlo al portapapeles.

imagen 5

Después nos conectamos por ssh a la Raspberry con la contraseña que hemos utilizado hasta ahora (recuerda que si no la has cambiado es raspberry)

imagen 6

En este momento, si intentamos entrar en el directorio .ssh del usuario xbian no debería dejarnos ya que ese directorio no existe (a no ser que hayas hecho ssh hacia algún otro equipo desde la Raspberry).

imagen 7

No pasa nada porque vamos a hacer uso de ssh-keygen para generar un par de claves para este usuario y así el directorio .ssh se creará automáticamente.

imagen 8

¿Veis como la imagen de la clave es distinta? Bien, ahora deberíamos poder acceder al directorio .ssh

imagen 9

Ahí están nuestras claves para el usuario xbian.

Ahora lo que queremos es poder acceder automáticamente desde el Mac en la Raspberry. Para ello tenemos que decirle a ésta que mi usuario del Mac es de confianza. Esto lo conseguimos creando un fichero llamado authorized_keys con la ayuda del comando nano authorized_keys.

imagen 10

Dentro del fichero pegamos el contenido del portapapeles, que era el contenido de nuestro fichero de clave pública de la cuenta del Mac. Hacemos CTRL+X para salir, le damos a Y para guardar los cambios, y pulsamos ENTER para dejar el nombre del fichero como está. Ahora, deberíamos tener un nuevo fichero en nuestro directorio .ssh

imagen 11

Ahí lo tenemos, así que lo último que nos queda por hacer es probarlo. Así que hago exit para terminar la conexión ssh y luego intento conectarme de nuevo.

imagen 12

¡Premio! como veis no me ha pedido la contraseña en ningún momento. Es algo muy sencillo y que nos evitará tener que estar escribiendo la contraseña cada vez que nos conectamos, cosa que haremos mucho para continuar configurando el sistema en las siguientes entradas.

Anuncios