Documentar autenticacion SSH por clave
This commit is contained in:
@@ -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`.
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user