# Guida Accesso Sicuro con Chiavi SSH — MikroTik RouterOS 7.x

Configurazione dell'autenticazione a chiave pubblica su RouterOS: più sicura
delle password e ideale per automatizzare SCP/SSH verso più router da remoto.

> **Regola d'oro:** non disabilitare mai l'accesso via password PRIMA di aver
> verificato al 100% che l'accesso con chiave funziona. Altrimenti rischi il
> lock-out, soprattutto da remoto.

---

## 1. Genera la coppia di chiavi (sul tuo PC)

```
ssh-keygen -t ed25519 -f ~/.ssh/mikrotik_key
```

- `ed25519` è l'algoritmo moderno consigliato (chiavi corte e robuste).
- Se hai router più vecchi che non lo supportano, usa RSA a 2048+ bit:
  ```
  ssh-keygen -t rsa -b 4096 -f ~/.ssh/mikrotik_key
  ```
- Alla richiesta, imposta una **passphrase**: protegge la chiave privata se
  qualcuno mette le mani sul file.

Vengono creati due file:
- `mikrotik_key`      → chiave **privata** (resta sul tuo PC, NON condividerla)
- `mikrotik_key.pub`  → chiave **pubblica** (da caricare sul router)

---

## 2. Carica la chiave pubblica sul router (via SCP)

```
scp ~/.ssh/mikrotik_key.pub admin@<IP-router>:
```

Se RouterOS 7.x rifiuta la connessione per mismatch di algoritmi, abilita lo
strong crypto sul router e riprova (vedi anche passo 5):
```
/ip ssh set strong-crypto=yes
```

Verifica che il file sia arrivato:
```
/file print
```
Deve comparire `mikrotik_key.pub`.

---

## 3. Importa la chiave su RouterOS

Collegati via SSH al router e associa la chiave pubblica all'utente:
```
/user ssh-keys import public-key-file=mikrotik_key.pub user=admin
```

Verifica che sia stata importata:
```
/user ssh-keys print
```

---

## 4. Verifica l'accesso con chiave (dal tuo PC)

```
ssh -i ~/.ssh/mikrotik_key admin@<IP-router>
```

Se entri **senza** che il router chieda la password (al massimo ti viene chiesta
la passphrase della chiave), l'autenticazione a chiave funziona.

> **Non procedere al passo 5 finché questo test non riesce in modo affidabile.**

---

## 5. Rafforza la sicurezza (solo DOPO aver validato il passo 4)

### 5.1 Strong crypto
Forza algoritmi robusti e disabilita quelli deboli/obsoleti:
```
/ip ssh set strong-crypto=yes
```

### 5.2 Disabilita il login con password
Da qui in poi si entra SOLO con chiave:
```
/ip ssh set password-authentication=no
```

> **ATTENZIONE:** dopo questo comando, chi non ha la chiave non entra più via
> SSH. Assicurati che:
> - la tua chiave privata sia al sicuro e con un backup;
> - resti almeno un canale di recupero (vedi sezione 6).

---

## 6. Rete di sicurezza (paracadute)

Con la password SSH disabilitata, se perdi la chiave privata o cambi PC senza
aver configurato la nuova chiave, non entri più via SSH. Tieni quindi attivi:

- **MAC-Winbox su tutte le interfacce** come accesso di emergenza a Layer 2:
  ```
  /tool mac-server set allowed-interface-list=all
  /tool mac-server mac-winbox set allowed-interface-list=all
  ```
- Un **backup della chiave privata** in luogo sicuro.
- Idealmente, accesso fisico o una persona sul posto per i casi estremi.

---

### Config lato client (comodità)
Nel tuo `~/.ssh/config` puoi definire scorciatoie per non ripetere `-i` ogni volta:
```
Host mikrotik-sedeX
    HostName 172.17.5.116
    User admin
    IdentityFile ~/.ssh/mikrotik_key
```
Poi accedi semplicemente con:
```
ssh mikrotik-sedeX
```

---

## Checklist finale
- [ ] Coppia di chiavi generata con passphrase
- [ ] Chiave pubblica caricata e importata sul router
- [ ] Accesso con chiave testato e funzionante
- [ ] Strong crypto abilitato
- [ ] Login password disabilitato SOLO dopo il test riuscito
- [ ] Paracadute attivo (MAC-Winbox + backup chiave privata)