Instalación de los S.O.
En este caso hemos usado para hacer de servidor de archivos un ordenador viejo en el que hemos instalado Ubuntu y en las Raspberry hemos metido Raspbian Stretch, la versión desktop. No necesitamos todos los programas que lleva instalada la versión completa y frente a la Lite facilita bastante las cosas a la hora de configurar el sistema.
En Raspbian hay que activar SSH, VNC, poner overscan en desactivado, conectarla a la WiFi (o a la red cableada) y poner un password decente al usuario «pi»
Para más información sobre el proceso de instalación:
En Ubuntu hay que crear un usuario, que también vamos a llamar «pi», con su home y asignarle también un password decente. Apuntamos aquí que los comandos a usar para ello son:
useradd -m "pi" passwd
Sí que es necesario que este ordenador cuente con IP estática puesto que las Raspberry necesitarán conectarse con él y deberán saber a dónde tienen que apuntar. Si estamos en una red local, podemos configurar el equipo con una IP estática, o reservar en el router una IP para que se la asigne a la MAC si la asignación es mediante DHCP.
En nuestro desarrollo el ordenador servidor está conectado a una red cableada con IP estática y las Raspberry conectadas mediante WiFi con IP dinámica, y partiendo de estas premisas vamos a seguir desarrollando el proyecto.
Conexión
Es hora de probar la conexión, así que desde la consola de la Raspberry tecleamos:
ssh pi@ip_del_servidor
Nos pedirá el pass que tiene pi en el servidor y si todo va bien conectaremos.
Suponemos que el servicio SSH se encuentra instalado en el ordenador, en caso contrario habría que instalarlo y después intentar la conexión:
Para instalar el servicio en el ordenador:
sudo apt-get install openssh-server
Damos por hecho que se ha conseguido la conexión, si no es así habrá que revisar la configuración antes de seguir adelante, pero es importante realizar esa conexión para saber que hasta aquí está todo en su sitio.
Sin embargo ese no va a ser el modo de conectar, queremos que las Raspberry lo hagan automático y que no dependan de un humano para meter la clave a cada consulta al servidor. Vamos a usar un conjunto de claves de cifrado asimétrico compuesto por una clave privada que mantendremos en la Raspberry y una clave pública que almacenaremos en el ordenador servidor.
Cifrado asimétrico
El nombre es muy rimbombante pero no debe asustarnos, consiste en lo anteriormente mencionado, generar un par de claves, colocarlas donde es debido y proporcionar los permisos justos y necesarios.
Para generar el par de claves en la Raspberry usaremos la siguiente instrucción:
ssh-keygen -t rsa

Como vemos en la captura nos solicitará un nombre para los ficheros, en este ejemplo hemos elegido «miclave«, así que en la vida real tocará sustituir «miclave» por el nombre que hayamos decidido dar al par de ficheros. También nos pedirá un password que dejaremos en blanco. Esto es importante para que la conexión se realice de forma automática y no requiera que a cada intento tengamos que introducir el pass. Tras esto nos generará los ficheros «miclave» y «miclave.pub» en el home de pi.
Ahora en la Raspberry debemos crear en el home un subdirectorio llamado «.ssh» (con el «.» lo que hacemos es crearlo como directorio oculto) y mover a él el fichero con la clave privada, el que no lleva extensión:
mkdir .ssh mv miclave .ssh/miclave
Ahora es importante dar los permisos adecuados al fichero (600) y a la carpeta (700) o no nos funcionará el asunto, así que nos situamos en el directorio y:
chmod 600 miclave
Y desde el home hacemos lo mismo con el directorio
chmod 700 .ssh
Toca irnos a preparar el servidor. Para ello mandamos el fichero miclave.pub al ordenador servidor y lo colocamos en el home del usuario pi del servidor.
Creamos también allí, en el servidor, el directorio «.ssh» igual que hemos hecho en la Raspberry. Y ahora hay que crear el fichero que ha de contener la clave pública y que ha de llamarse authorized_keys, para ello desde el home damos la siguiente instrucción:
touch .ssh/authorized_keys
Y acto seguido copiamos el contenido del fichero de clave pública en ese archivo:
cat miclave.pub >> .ssh/authorized_keys
Para finalizar, asignamos los permisos de la misma forma que hemos hecho en la raspberry para el archivo y su directorio.
Desde el directorio .ssh:
chmod 600 authorized_keys
Y desde el directorio home:
chmod 700 .ssh
Ya sólo queda retocar ligeramente como root el fichero sshd_config que se encuentra en el servidor en el directorio /etc/ssh descomentando estas dos líneas:
PubkeyAutehtication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
Y reiniciar el servicio:
sudo service sshd restart
Y ya está todo, así que toca probar la conexión. Para ello nos vamos a la Rasberry y probamos la siguiente instrucción desde el home de pi:
ssh -i /home/pi/.ssh/miclave pi@ip_del_servidor
Igual en el la prueba anterior, tenemos que conseguir la conexión pero sin que nos pida clave esta vez. Si logramos conectarnos sin que nos pida la clave, perfecto, hemos hecho todo correctamente y vamos por buen camino, y si no tocará revisar los pasos hasta conseguirlo antes de seguir adelante. Una vez que todo funcione podemos quitar la clave pública, el fichero miclave.pub, del home de pi en el servidor.
Ficheros tratados en esta entrada
-
- miclave: clave privada de la Raspberry
- miclave.pub: clave pública en el servidor
- authorized_keys: contiene miclave.pub
- sshd_config: modificado en el servidor