You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Quando si duplicano macchine virtuali, è comune incontrare il problema delle chiavi SSH duplicate. Queste duplicazioni possono causare conflitti e avvisi di sicurezza durante le connessioni SSH. Questo articolo fornisce una soluzione generale per generare chiavi SSH uniche per ogni macchina clonata, indipendentemente dall'infrastruttura di virtualizzazione utilizzata.
18
+
# Cloud-Init su Linux: Rigenerare le Chiavi SSH in Automatico per il Tuo Homelab
19
19
20
-
## Preparazione del Template
20
+
*Autore: Luigi Smiraglio*
21
21
22
-
Prima di creare il template, è fondamentale assicurarsi che le chiavi host SSH esistenti vengano rimosse. Questo processo garantirà che nuove chiavi SSH vengano generate al primo avvio della macchina clonata.
22
+
## Introduzione
23
23
24
-
## Rimozione delle Chiavi SSH Esistenti
24
+
Nel mondo degli homelab, è comune utilizzare macchine virtuali clonando un template preconfigurato. Questo metodo, sebbene efficiente, può causare problemi di sicurezza, specialmente con le chiavi SSH duplicate. In questa guida, vedremo come utilizzare **cloud-init** su Debian per rigenerare automaticamente le chiavi SSH al primo avvio di una macchina clonata, garantendo un ambiente più sicuro e affidabile.
25
25
26
-
Esegui il seguente comando sulla macchina template:
26
+
## Cos'è `cloud-init`?
27
+
28
+
`cloud-init` è uno strumento potente per la configurazione automatica delle istanze al primo avvio. Originariamente progettato per ambienti cloud, può essere utilizzato efficacemente anche in ambienti virtualizzati come VMware, Proxmox o nel tuo homelab. Consente di eseguire script e configurazioni iniziali, come la rigenerazione delle chiavi SSH e la personalizzazione della rete.
29
+
30
+
## Il Problema delle Chiavi SSH Duplicate
31
+
32
+
Clonando macchine virtuali da un template, tutte le istanze condividono le stesse chiavi SSH. Questo può causare avvisi di sicurezza quando si tenta di connettersi tramite SSH, poiché il client rileva una chiave host già conosciuta con un'impronta digitale diversa. Ad esempio:
33
+
34
+
```
35
+
The authenticity of host '10.290.70.139 (10.290.70.139)' can't be established.
36
+
ED25519 key fingerprint is SHA256:bCtJRRv99999999Jshjyintpp/Fl8Z99Vv99Leeimtg.
37
+
This host key is known by the following other names/addresses:
38
+
39
+
~/.ssh/known_hosts:1: [hashed name]
40
+
~/.ssh/known_hosts:4: [hashed name]
41
+
~/.ssh/known_hosts:5: [hashed name]
42
+
~/.ssh/known_hosts:6: [hashed name]
43
+
~/.ssh/known_hosts:7: [hashed name]
44
+
~/.ssh/known_hosts:8: [hashed name]
45
+
~/.ssh/known_hosts:9: [hashed name]
46
+
~/.ssh/known_hosts:10: [hashed name]
47
+
(1 additional names omitted)
48
+
Are you sure you want to continue connecting (yes/no/[fingerprint])?
49
+
```
50
+
51
+
Questo messaggio indica un potenziale rischio di sicurezza, suggerendo un possibile attacco man-in-the-middle. Rigenerare le chiavi SSH per ogni macchina clonata risolve questo problema, migliorando la sicurezza dell'ambiente.
52
+
53
+
## Soluzione: Utilizzare `cloud-init` nel Tuo Homelab
54
+
55
+
Anche se associato ai provider cloud, `cloud-init` può essere configurato per funzionare efficacemente nel tuo homelab. Ecco come implementarlo su una macchina Debian in un ambiente virtualizzato come VMware o Proxmox.
56
+
57
+
### 1. Installazione e Configurazione di `cloud-init`
58
+
59
+
#### a. Installare `cloud-init`
60
+
61
+
Verifica se `cloud-init` è già installato. In caso contrario, installalo con:
27
62
28
63
```bash
29
-
rm /etc/ssh/ssh_host_*
64
+
apt update && apt upgrade -y
65
+
apt install cloud-init -y
30
66
```
31
67
32
-
##Configurazione della Rigenerazione
68
+
#### b. Configurare `cloud-init` per Rigenerare le Chiavi SSH
33
69
34
-
Si proceda quindi con la rigenerazione delle chiavi
70
+
Configura `cloud-init` per eliminare e rigenerare le chiavi SSH al primo avvio della macchina clonata.
35
71
36
-
### Opzione 1: Utilizzo di cloud-init
72
+
1.**Modifica il File di Configurazione**:
37
73
38
-
Installa cloud-init:
74
+
Apri `/etc/cloud/cloud.cfg` con un editor di testo:
> **Nota:** Non avviare manualmente `cloud-init` con ` systemctl start cloud-init`. Deve essere eseguito automaticamente al primo avvio per funzionare correttamente.
118
+
119
+
### 2. Preparazione del Template
83
120
121
+
Prima di trasformare la macchina in un template, è necessario pulire i dati di `cloud-init` e spegnere la macchina. Sebbene `cloud-init` possa rigenerare automaticamente le chiavi SSH in un sistema già configurato, preferisco eliminare manualmente le chiavi host SSH esistenti per garantire che il processo di rigenerazione venga avviato correttamente. Questo perché, al primo accesso SSH, posso indirettamente avere conferma che tale meccanismo stia funzionando.
122
+
123
+
Esegui il seguente comando sulla macchina template:
84
124
```bash
85
-
chmod +x /etc/init.d/regenerate-ssh-keys
86
-
update-rc.d regenerate-ssh-keys defaults
125
+
rm /etc/ssh/ssh_host_*
87
126
```
88
127
89
-
## Creazione del Template
128
+
## Rimozione delle Chiavi SSH Esistenti
90
129
91
-
Spegni la macchina:
130
+
Esegui il seguente comando sulla macchina template:
92
131
93
132
```bash
94
-
shutdown -h now
133
+
rm /etc/ssh/ssh_host_*
95
134
```
96
135
97
-
Crea il template secondo la tua piattaforma:
98
-
99
-
- **VMware**: Converti la macchina in template
100
-
- **VirtualBox**: Esporta come appliance
101
-
- **Altre Piattaforme**: Segui le procedure specifiche
136
+
#### a. Pulizia di `cloud-init`
102
137
103
-
## Clonazione delle Macchine
138
+
Pulisci i dati di `cloud-init` per simulare un primo avvio:
104
139
105
-
1. Clona la macchina dal template
106
-
2. Avvia la macchina clonata
107
-
3. Le nuove chiavi SSH verranno generate automaticamente
140
+
```bash
141
+
cloud-init clean
142
+
```
108
143
109
-
## Gestione del File known_hosts
144
+
#### b. Spegnere la Macchina
110
145
111
-
Per evitare conflitti con le vecchie chiavi:
146
+
Spegni la macchina in modo sicuro:
112
147
113
148
```bash
114
-
# Rimuovi la vecchia chiave
115
-
ssh-keygen -R <indirizzo_IP_o_nome_host>
149
+
shutdown -h now
150
+
```
151
+
La macchina è ora pronta per diventare un template.
116
152
117
-
# Esempio
118
-
ssh-keygen -R 10.10.10.100
153
+
### 3.a Creazione del Template su VMware
119
154
120
-
# Connettiti alla macchina
121
-
ssh utente@<indirizzo_IP_o_nome_host>
122
-
```
155
+
1. **Seleziona la Macchina Spenta**:
156
+
157
+
Apri VMware e individua la macchina Debian preparata.
158
+
159
+
2. **Converti la Macchina in un Template**:
160
+
161
+
Segui le procedure specifiche di VMware. Assicurati di:
162
+
163
+
- **Disattivare "Connect At Power On"** per la scheda di rete.
164
+
- **Impostare il "MAC Address" su Automatico** per evitare conflitti di rete.
165
+
166
+
### 3.b Creazione del Template su Proxmox
167
+
168
+
1. **Seleziona la Macchina Spenta**:
169
+
170
+
Apri Proxmox e individua la macchina Debian preparata.
171
+
172
+
2. **Converti la Macchina in un Template**:
123
173
124
-
## Automazione
174
+
Segui le procedure specifiche di Proxmox. Assicurati di:
125
175
126
-
Per ambienti con numerose macchine virtuali, considera l'uso di:
176
+
- **Disattivare l'Avvio Automatico** per la scheda di rete.
177
+
- **Impostare il "MAC Address" su Automatico** per evitare conflitti di rete.
178
+
- **Convertire la VM in un Template**:
179
+
- Clicca con il tasto destro sulla macchina virtuale.
180
+
- Seleziona **"Convert to Template"**.
181
+
- Conferma l'operazione.
127
182
128
-
- Ansible
129
-
- Puppet
130
-
- Chef
183
+
Questo processo creerà un template che potrà essere utilizzato per clonare nuove macchine senza conflitti di rete o chiavi SSH duplicate.
131
184
132
-
Questi strumenti possono automatizzare la configurazione delle chiavi SSH e altre impostazioni iniziali.
185
+
### 4. Clonazione delle Macchine dal Template
186
+
187
+
Ogni volta che cloni una nuova macchina dal template:
188
+
189
+
1. **Avvia la Macchina Clonata**:
190
+
191
+
Al primo avvio, `cloud-init` rigenererà automaticamente le chiavi SSH.
192
+
193
+
2. **Verifica le Nuove Chiavi SSH**:
194
+
195
+
Controlla le nuove chiavi generate:
196
+
197
+
```bash
198
+
ls /etc/ssh/ssh_host_*
199
+
```
133
200
134
201
## Conclusione
135
202
136
-
Seguendo questa guida, ogni macchina virtuale clonata avrà una chiave SSH unica, eliminando conflitti e migliorando la sicurezza. Questa soluzione è applicabile a qualsiasi infrastruttura di virtualizzazione e garantisce una gestione efficiente delle macchine virtuali clonate.
203
+
Utilizzando `cloud-init` nel tuo homelab, automatizzi la rigenerazione delle chiavi SSH per ogni nuova macchina clonata, migliorando la sicurezza e semplificando la gestione delle macchine virtuali. Questa soluzione è adattabile a vari sistemi operativi e piattaforme di virtualizzazione, rendendola estremamente flessibile.
204
+
205
+
---
206
+
207
+
## Link
208
+
209
+
- [Documentazione Ufficiale di cloud-init](https://cloudinit.readthedocs.io/en/latest/index.html)
0 commit comments