From 2a781e78595eb0be43588ca208f2ea452523368e Mon Sep 17 00:00:00 2001 From: Yamaray Date: Wed, 3 Jun 2026 01:02:36 +0200 Subject: [PATCH] Documentar autenticacion SSH por clave --- DOCUMENTACION.md | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ docs.html | 29 ++++++++++++++++ 2 files changed, 119 insertions(+) diff --git a/DOCUMENTACION.md b/DOCUMENTACION.md index 8546441..f4b7399 100644 --- a/DOCUMENTACION.md +++ b/DOCUMENTACION.md @@ -124,6 +124,96 @@ Password SSH. Se guarda en `config.json`, por lo que el archivo debe permanecer Ruta de la clave privada SSH dentro del contenedor o del host donde corre el monitor. Debe apuntar a una clave privada legible por el proceso del monitor. Para uso en Docker, monta la clave o una carpeta `.ssh` dentro del contenedor. Las claves con passphrase requieren agente SSH disponible; para monitorizacion unattended suele usarse una clave sin passphrase protegida por permisos de archivo. +## Autenticacion SSH por Clave Privada + +El monitor soporta dos metodos de autenticacion por dispositivo: + +- Password SSH: usar `password` y dejar `privateKeyPath` vacio. +- Clave privada: dejar `password` vacio y configurar `privateKeyPath`. + +Cuando `privateKeyPath` tiene valor, el backend usa clave privada y no usa el password. + +### 1. Guardar la clave privada en el volumen del monitor + +En la RPi donde corre el contenedor, guarda las claves en: + +```text +/home/yamaray/docker/monitorRPi/ssh +``` + +Ejemplo: + +```text +/home/yamaray/docker/monitorRPi/ssh/carabanes_monitor_ed25519 +/home/yamaray/docker/monitorRPi/ssh/carabanes_monitor_ed25519.pub +``` + +La clave privada debe quedar protegida: + +```bash +chmod 700 /home/yamaray/docker/monitorRPi/ssh +chmod 600 /home/yamaray/docker/monitorRPi/ssh/carabanes_monitor_ed25519 +``` + +El `docker-compose.yml` debe montar esa carpeta dentro del contenedor: + +```yaml +volumes: + - /home/yamaray/docker/monitorRPi/app:/app:ro + - /home/yamaray/docker/monitorRPi/data:/data + - /home/yamaray/docker/monitorRPi/ssh:/ssh:ro +``` + +Dentro de la configuracion del dispositivo, la ruta debe ser la ruta vista por el contenedor: + +```json +"password": "", +"privateKeyPath": "/ssh/carabanes_monitor_ed25519" +``` + +### 2. Instalar la clave publica en la Raspberry destino + +En el dispositivo remoto, la clave publica debe agregarse al usuario SSH correspondiente. + +Ejemplo para usuario `pi`: + +```bash +mkdir -p ~/.ssh +chmod 700 ~/.ssh +nano ~/.ssh/authorized_keys +chmod 600 ~/.ssh/authorized_keys +``` + +En `authorized_keys` pega el contenido de la clave publica: + +```text +carabanes_monitor_ed25519.pub +``` + +El archivo correcto en Linux/OpenSSH es: + +```text +~/.ssh/authorized_keys +``` + +No es `authorised_keys`. + +### 3. Probar la conexion desde el contenedor + +Una vez montada la clave, puedes probar desde la RPi host: + +```bash +docker exec -it monitor-rpi ssh -i /ssh/carabanes_monitor_ed25519 -o IdentitiesOnly=yes pi@HOST_REMOTO +``` + +Si el dispositivo usa un puerto distinto: + +```bash +docker exec -it monitor-rpi ssh -i /ssh/carabanes_monitor_ed25519 -o IdentitiesOnly=yes -p 34000 pi@192.168.0.1 +``` + +Si la conexion funciona sin pedir password, el monitor tambien podra consultar ese dispositivo. + ### `model` Modelo visible: `RPi 3`, `RPi 4`, `RPi 5`. diff --git a/docs.html b/docs.html index 5f7b940..e554f2f 100644 --- a/docs.html +++ b/docs.html @@ -92,6 +92,35 @@
  • location: ubicacion.
  • +

    Autenticacion SSH por clave privada

    +

    Por dispositivo se puede usar password o clave privada. Si privateKeyPath tiene valor, el backend usa la clave privada y no usa el password.

    + +

    Clave en el contenedor

    +

    Guarda la clave privada en la RPi donde corre el monitor:

    +
    /home/yamaray/docker/monitorRPi/ssh/carabanes_monitor_ed25519
    +

    Protege permisos:

    +
    chmod 700 /home/yamaray/docker/monitorRPi/ssh
    +chmod 600 /home/yamaray/docker/monitorRPi/ssh/carabanes_monitor_ed25519
    +

    El compose debe montar la carpeta como solo lectura:

    +
    - /home/yamaray/docker/monitorRPi/ssh:/ssh:ro
    +

    En el configurador usa la ruta vista desde el contenedor:

    +
    password: ""
    +privateKeyPath: /ssh/carabanes_monitor_ed25519
    + +

    Clave publica en la Raspberry destino

    +

    En el usuario SSH remoto, pega la clave publica en:

    +
    ~/.ssh/authorized_keys
    +

    Comandos tipicos en la Raspberry destino:

    +
    mkdir -p ~/.ssh
    +chmod 700 ~/.ssh
    +nano ~/.ssh/authorized_keys
    +chmod 600 ~/.ssh/authorized_keys
    +

    El nombre correcto del archivo es authorized_keys, no authorised_keys.

    + +

    Prueba manual

    +
    docker exec -it monitor-rpi ssh -i /ssh/carabanes_monitor_ed25519 -o IdentitiesOnly=yes -p 34000 pi@192.168.0.1
    +

    Si entra sin pedir password, el monitor podra usar esa clave para el scan.

    +

    API

    GET /api/status

    Devuelve el ultimo estado: resumen, dispositivos, umbrales, clientes activos e intervalo actual.