Confianza SSH entre Docker de Homeassistant y el host

Este tutorial es para poder mostrar sensores y leer datos o todo lo que se nos ocurra a través de confianza SSH entre el docker de Homeassistant y el host donde está instalado, si no haces esto Homeassistant no puede acceder a los datos del sistema host donde esta instalado, y solo ve lo que hay dentro de su contenedor docker.

Sería conseguir lo que hace nuestro compañero en este otro tutorial pero teniendo Homeassistant en Docker.

Para evitar esta limitación lo que se hace es generar una confianza SSH entre el docker de Homeassistant y el host, de tal manera que pueda acceder al host directamente.

Muy importante: Cada vez que actualices el contenedor de Homeassistant con una nueva versión el mismo se destruye, con lo que hay que hacer esta operación de nuevo. Para evitar esto se puede hacer persistente, mirar la última parte de este tutorial.

Generación de las claves

Primero vamos a generar las claves SSH en el contenedor de docker, entramos en la consola de Portainer y dentro de los contenedores pinchamos en este boton para acceder a la consola docker de Homeassistant:

Despues le damos a Connect:

Veremos la consola del docker de Homeassistant:

Para generar las claves escribimos esto en la consola:

ssh-keygen

Damos intro a todas las opciones.

Nos genera una key SSH y la almacena en /root/.ssh/

Ahora vamos a copiar esa clave en el host donde esta instalado docker, escribimos lo siguiente en la consola, cambiando el user y la ip por lo que useis en vuestro host:

ssh-copy-id user@ip

Si todo ha salido bien, os saldrá una pantalla como esta:

Esta operación podeis hacerla con el resto de equipos de la red si quereis acceder por SSH a otros, y de igual manera poner sensores en Homeassistant de una Raspberry por ejemplo que tengais en casa.

Para ver que funciona bien escribir en la consola:

ssh user@ip

Accedereis al SSH del host:

Borrado de claves

Si necesitais borrar las claves se hacen con este comando:

ssh-keygen -R ip

Donde ip seria la ip de donde quieres borrar las claves de tu contenedor de docker.

Para borrar todas las claves se usa este comando:

rm ~/.ssh/known_hosts

un saludo y nos vemos en el chat de Telegram.

Persistencia Claves SSH

Como sabéis, al crear los containers de cero o actualizarlos , se destruye todo la partición del container y se crea de nuevo por lo que las claves generadas desaparecen y hay que reproducir los pasos anteriores nuevamente.

Si queremos dejar las claves de formas persistentes y no preocuparnos de volver a crearlas cada vez que actualicemos la versión de home assistant podemos hacer lo siguiente:

Como vimos en los pasos anteriores al generar las claves ssh en el directorio que indicamos (normalmente para home assistant en /user/.ssh/) se nos generan tres archivos: id_rsa, id_rsa.pub y known_hosts. 

El primer paso a seguir es entrar via portainer a la consola del container , apuntar la id del container y asegurarnos de que la ruta hacia esos tres archivos corresponde con la que tenemos apuntada (la carpeta .ssh/ estará oculta, para verla necesitamos usar el comando ls -all).

El siguiente paso es conectar via ssh al host donde tenemos el container y vamos a copiar los tres archivos generados dentro del container al directorio que  queramos dentro de nuestro host:

docker cp idcontainer:/ruta/dentro/delcontainer /ruta/dentro/host

A la hora de ejecutar este comando hay que tener en cuenta que la ruta dentro del host debe de existir , de lo contrario tendremos un error.  Esta operación hay que repetirla para cada archivo.

Finalmente ahora que tenemos en el host una localización de nuestros archivos lo único que hay que hacer es añadir a nuestra orden de ejecución para crear el container  ya sea vía consola o vía compose el volumen donde tenemos las claves.

-v /ruta/claves:/user

Y con estos sencillos pasos nos olvidaremos de tener que repetir el proceso de crear las claves ssh cada vez que borremos o actualizemos el container de home assistant.

2 comentarios sobre “Confianza SSH entre Docker de Homeassistant y el host

  • Pingback:Datos de tu coche en HomeAsssistant con ayuda de la app Fuelio | Domology 2.0

  • el 27 septiembre, 2019 a las 14:50
    Permalink

    «Y con estos sencillos pasos nos olvidaremos de tener que repetir el proceso de crear las claves ssh cada vez que borremos o actualizemos el container de home assistant.»

    Pues no los veo yo tan sencillos.

    No seria igual con winSCP o samba copiarlos y pegarlo en otro sitio?

    «El primer paso a seguir es entrar via portainer a la consola del container , apuntar la id del container y asegurarnos de que la ruta hacia esos tres archivos corresponde con la que tenemos apuntada (la carpeta .ssh/ estará oculta, para verla necesitamos usar el comando ls -all).

    El siguiente paso es conectar via ssh al host donde tenemos el container y vamos a copiar los tres archivos generados dentro del container al directorio que queramos dentro de nuestro host:

    docker cp idcontainer:/ruta/dentro/delcontainer /ruta/dentro/host»

Deja un comentario

Síguenos

Siguenos en facebook