viernes, 18 de septiembre de 2015

ACCESO SSH CON CLAVE PÚBLICA/PRIVADA EN RASPBERRY Pt.1

SSH permite utilizar un gran abanico de formas de autenticación diferentes al clásico usuario/contraseña.
En este tutorial utilizaremos el método de clave pública/privada.
Esta fórmula es útil por ejemplo para crear tareas programadas entre dos servidores (backups,..). También permite que el cliente ssh pueda verificar que el servidor  al que se conecta es el genuino y no es suplantado gracias a la clave pública instalado en ambos.
De esta forma no necesitaremos introducir ninguna contraseña, ya que será la clave publica la que encriptará y clave privada la que desencriptará los datos. 
Pongámonos manos a la obra. Nos conectaremos al cliente con el que queramos establecer la conexión con la Raspberry.
En mi caso he elegido mi NAS WDMYCLOUD con el que hago las copias de seguridad de mis archivos. Tenemos que generar dos claves: una pública que tendrá cliente y servidor y otra privada que sólo tendrá el cliente. 
accedemos al terminal del nas y escribimos:

$  ssh-keygen -t dsa -b 1024 -f .ssh/mykey

SSH implementa la autenticación con clave pública utilizando RSA o DSA como algoritmos de encriptación.
A continuación se  generaran ambas claves y nos pedirá que introduzcamos una clave para el passphrase. Podemos dejarlo en blanco aunque no es recomendable. 



























Ya tendremos nuestras claves generadas en el directorio .ssh de nuestro "home". En caso de que nos de error porque no exista el directorio .ssh, lo creamos y repetimos la acción.

Vemos ahora las opciones que hemos utilizado:
-b: establece el número de bits en la clave. Por defecto es 1024.
-f: crea el nombre y directorio del fichero de clave.


Es importante asignar bien los permisos para que funcione la comunicación entre los servidores a través de las claves y para mantener un grado mínimo de seguridad. Estos quedarían de la siguiente forma:














-El directorio .ssh debe tener permisos 700.
-El archivo "mykey" es la clave privada y debe tener permisos restrictivos (600).
-El archivo "mykey.pub" es la clave pública y debe tener permisos 644 para que el servidor pueda comparar ambas claves públicas.
Tenemos que verificar también que los usuarios y grupos propietarios de todos estos archivos deben ser siempre el usuario con el que vamos a conectarnos vía SSH.
Ya tenemos nuestras claves creadas y configuradas en el dispositivo cliente. Solo falta ahora exportar la clave pública "mykey.pub".
En nuestra Raspberry debemos crear el directorio .ssh dentro del "home" del usuario con el que nos vamos conectar a través del cliente (si no existe). Los permisos deben ser restrictivos (700):

$ mkdir  /home/usuario/.ssh
$ chmod 700 /home/usuario/.ssh

Dentro de este directorio debemos crear el archivo "authorized_keys", que almacenará  todas las claves publicas de los diferentes clientes que se conecten al servidor, y que el cliente tendrá también que verificar:


$ touch  /home/usuario/.ssh/authorized_keys
$ chmod 644 /home/usuario/.ssh/authorized_keys

El último paso es copiar el contenido de nuestra clave en el archivo authorized_keys que se encuentra en /home/usuario/.ssh de nuestro servidor Raspberry.
 Para ello abrimos el fichero local y mediante ssh lo copiamos en la última fila del archivo authorized_keys:

cat .ssh/id_dsa.pub | ssh usuario@ ip_o_nombre_de_raspberry "cat >> .ssh/authorized_keys"

Antes de probar las claves, es necesario verificar que el servidor SSH lo permita. Abrimos el archivo /etc/ssh/sshd_config con nuestro editor y descomentamos lo siguiente:


PubkeyAuthentication yes # habilitamos la autenticación por clave pública
AuthorizedKeysFile .ssh/authorized_keys # indicamos la ruta de las claves.
RSAAuthentication yes # si el algoritmo es tipo RSA
DSAAuthentication yes # si el algoritmo es tipo DSA

Guardamos el archivo y reiniciamos el servicio SSH:

/etc/init.d/ssh restart

Ya podremos acceder a nuestra Raspberry Pi 2 mediante SSH sin introducir contraseña.
En el próximo tutorial veremos cómo configurar y generar claves ssh para Windows (Putty) y Android (Connectboot).

No hay comentarios:

Publicar un comentario