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.Por dispositivo se puede usar password o clave privada. Si privateKeyPath tiene valor, el backend usa la clave privada y no usa el password.
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
+
+ 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.
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.
+Devuelve el ultimo estado: resumen, dispositivos, umbrales, clientes activos e intervalo actual.