Documentar autenticacion SSH por clave

This commit is contained in:
2026-06-03 01:02:36 +02:00
parent 2435bd9437
commit 2a781e7859
2 changed files with 119 additions and 0 deletions
+90
View File
@@ -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. 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` ### `model`
Modelo visible: `RPi 3`, `RPi 4`, `RPi 5`. Modelo visible: `RPi 3`, `RPi 4`, `RPi 5`.
+29
View File
@@ -92,6 +92,35 @@
<li><code>location</code>: ubicacion.</li> <li><code>location</code>: ubicacion.</li>
</ul> </ul>
<h2>Autenticacion SSH por clave privada</h2>
<p>Por dispositivo se puede usar password o clave privada. Si <code>privateKeyPath</code> tiene valor, el backend usa la clave privada y no usa el password.</p>
<h3>Clave en el contenedor</h3>
<p>Guarda la clave privada en la RPi donde corre el monitor:</p>
<pre><code>/home/yamaray/docker/monitorRPi/ssh/carabanes_monitor_ed25519</code></pre>
<p>Protege permisos:</p>
<pre><code>chmod 700 /home/yamaray/docker/monitorRPi/ssh
chmod 600 /home/yamaray/docker/monitorRPi/ssh/carabanes_monitor_ed25519</code></pre>
<p>El compose debe montar la carpeta como solo lectura:</p>
<pre><code>- /home/yamaray/docker/monitorRPi/ssh:/ssh:ro</code></pre>
<p>En el configurador usa la ruta vista desde el contenedor:</p>
<pre><code>password: ""
privateKeyPath: /ssh/carabanes_monitor_ed25519</code></pre>
<h3>Clave publica en la Raspberry destino</h3>
<p>En el usuario SSH remoto, pega la clave publica en:</p>
<pre><code>~/.ssh/authorized_keys</code></pre>
<p>Comandos tipicos en la Raspberry destino:</p>
<pre><code>mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys</code></pre>
<p>El nombre correcto del archivo es <code>authorized_keys</code>, no <code>authorised_keys</code>.</p>
<h3>Prueba manual</h3>
<pre><code>docker exec -it monitor-rpi ssh -i /ssh/carabanes_monitor_ed25519 -o IdentitiesOnly=yes -p 34000 pi@192.168.0.1</code></pre>
<p>Si entra sin pedir password, el monitor podra usar esa clave para el scan.</p>
<h2>API</h2> <h2>API</h2>
<h3>GET /api/status</h3> <h3>GET /api/status</h3>
<p>Devuelve el ultimo estado: resumen, dispositivos, umbrales, clientes activos e intervalo actual.</p> <p>Devuelve el ultimo estado: resumen, dispositivos, umbrales, clientes activos e intervalo actual.</p>