Per entrare in un server Linux da un terminale non si usa una password ma una chiave SSH: un file che hai sul tuo computer e che la macchina riconosce. È più sicuro di una password, e proprio per questo, quando si perde il file, non c'è nessun "hai dimenticato la password?". Hai formattato il portatile, il tecnico che la aveva non c'è più, il file è rimasto su un disco vecchio: la macchina continua a funzionare ma nessuno può entrare.
Pensa a cosa succederebbe se fosse domani, con il sito di un cliente in produzione: su AWS non c'è un'assistenza che entri al posto tuo, la macchina è tua e anche la chiave. In Lightsail di solito c'è una via d'uscita, perché la sua console può aprire un terminale nella macchina senza la tua chiave e da lì se ne mette una nuova. Ma quella via d'uscita fallisce più spesso di quanto sembri (un firewall interno, una configurazione SSH rotta, la casella sbagliata in Rete), su EC2 semplicemente non esiste, e allora la strada passa per istantanee e macchine nuove, o per il nulla. Questa guida percorre tutte le vie d'uscita, dalla più facile all'ultima, e finisce con quello che conviene lasciare pronto per non ripassare da qui.
Prima di iniziare: cosa significa ogni cosa
- SSH
- Il modo di dare ordini a un server Linux scrivendo comandi da un altro computer, in modo cifrato.
- Chiave SSH (coppia di chiavi)
- Due file che vanno insieme: la chiave privata, che conservi tu e non condividi mai, e la pubblica, che si lascia sul server. Il server ti fa entrare se hai la privata che corrisponde alla pubblica che lui conosce.
- Chiave predefinita di Lightsail
- Quando crei una macchina senza altre indicazioni, Lightsail usa una sua chiave per regione, che puoi scaricare dal tuo account in qualsiasi momento.
- Terminale del browser
- Il pulsante "Connetti tramite SSH" della console di Lightsail. Apre un terminale nella macchina usando una chiave temporanea gestita da Amazon, senza bisogno della tua.
- authorized_keys
- Il file, dentro la macchina, dove stanno le chiavi pubbliche autorizzate a entrare. Aggiungere una riga lì vuol dire aggiungere una chiave.
- Istantanea
- Una copia completa della macchina. Creando una macchina nuova da essa puoi scegliere una chiave SSH diversa.
Passo dopo passo
Verifica se la macchina usa la chiave predefinita
Nella console di Lightsail, apri la macchina. Nella scheda Connetti dice quale chiave usa: se c'è scritto "chiave predefinita" della tua regione, sei fortunato: vai al menu del tuo account (in alto a destra), Account, scheda Chiavi SSH, e scarica la chiave predefinita di quella regione. Con quel file puoi già entrare come sempre. Se la macchina usava una chiave che hai caricato tu o creato con un nome tuo, continua a leggere.
Entra con il terminale del browser
Clicca il pulsante Connetti tramite SSH della macchina. Si apre un terminale in una finestra del browser, già dentro la macchina, senza chiederti nulla: Lightsail usa per questo una sua chiave temporanea. Se si apre, il problema è risolto a metà; ora metterai una chiave tua per rientrare dal tuo computer.
Crea una chiave nuova sul tuo computer
Su Windows (PowerShell), Mac o Linux, scrivi in un terminale del tuo computer:
ssh-keygen -t ed25519 -f ~/.ssh/lightsail-nuevaTi chiede una password per proteggere la chiave (consigliabile). Crea due file:
lightsail-nueva(privata, non condividerla) elightsail-nueva.pub(pubblica). Apri il.pubcon un editor di testo e copia la sua unica riga, che inizia conssh-ed25519.Aggiungi la chiave pubblica nella macchina
Torna al terminale del browser e scrivi, incollando la tua riga tra le virgolette:
echo "ssh-ed25519 AAAA...tu-clave... comentario" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keysNel terminale del browser si incolla con l'icona degli appunti della finestra stessa (premere Ctrl+V lì non sempre funziona). Verifica con
tail -1 ~/.ssh/authorized_keysche la riga sia rimasta intera.Prova dal tuo computer
Dal terminale del tuo computer:
ssh -i ~/.ssh/lightsail-nueva bitnami@IP-de-la-maquinaL'utente è
bitnaminei modelli di applicazioni,ubuntusu Ubuntu,ec2-usersu Amazon Linux oadminsu Debian. Se entri, conserva la chiave privata in un posto sicuro (un gestore di password accetta file) e, questa volta, annota dove sta.Se nemmeno il terminale del browser entra: istantanea
A volte un firewall interno della macchina o una configurazione SSH rotta impediscono anche il terminale del browser. Allora: scheda Snapshot, creane una (o usa l'automatica più recente), e da essa Crea nuova istanza. Nel modulo di creazione, nella sezione della chiave SSH, scegli quella predefinita o una nuova. La macchina nuova è una copia esatta con una chiave che hai davvero. Sposta l'IP statico sulla nuova (guida in questa sezione) e cancella la vecchia quando hai verificato che tutto va bene. Metti in conto un'ora abbondante e un'interruzione, e fallo con calma: è il momento in cui è più facile rompere qualcos'altro.
Su EC2 non c'è il terminale del browser: la procedura ufficiale
Su EC2 la console di AWS non può entrare al posto tuo. Le vie d'uscita sono due. Quella automatica: AWSSupport-ResetAccess, in Systems Manager → Automation, che ferma la macchina, lavora sul suo disco da una macchina ausiliaria e la riavvia con una chiave nuova (la macchina resterà ferma qualche minuto). Quella manuale, per chi se la cava: fermare la macchina, scollegare il suo disco radice, agganciarlo a un'altra macchina EC2, montare il disco e aggiungere la tua chiave pubblica all'
authorized_keysdell'utente, e rimettere il disco al suo posto. Se la macchina ha l'agente di Systems Manager e un ruolo IAM, Session Manager apre un terminale senza chiave e ti risparmia tutto quanto sopra.E se non c'è nemmeno un'istantanea
È la fine della catena e conviene guardarla in faccia. Se il terminale del browser non entra, se non è Lightsail, se la macchina è stata cancellata o il disco è danneggiato, e non esiste nessuna copia, non c'è niente da recuperare: l'applicazione, il database, i file, le configurazioni e gli anni di lavoro che c'erano dentro si perdono. AWS non può recuperare quello che non è stato copiato, e non c'è un servizio tecnico da chiamare. Non è un caso raro: succede ogni anno ad aziende che consideravano la macchina "una cosa che semplicemente funziona".
Recuperato l'accesso: lascia pronto quello che ti avrebbe risparmiato tutto questo
- Istantanee automatiche, ogni notte, e se possibile una copia in un'altra regione. È l'unica differenza tra un'ora di lavoro e perdere tutto.
- Una porta di emergenza che non dipenda da file su portatili né dalla console di AWS: un utente di soccorso che accetti solo certificati firmati da te, come spiega la guida della chiave di riserva.
- La chiave privata in un gestore di password, condivisa con chi deve averla, e annotato dove sta.
Cosa può andare storto
Il terminale del browser dice che non riesce a connettersi
Quasi sempre è il firewall interno della macchina (ufw, firewalld) che non lascia passare, oppure, limitando la porta 22 al tuo IP in Lightsail, si è deselezionato "Consenti SSH dal browser di Lightsail". Controlla quella casella nella scheda Rete. Se è il firewall interno, resta solo la via dell'istantanea.
Entro con la chiave nuova ma mi chiede una password
Sta chiedendo la password della chiave, quella che hai messo in ssh-keygen, non quella della macchina. È normale. Se non ne hai messa nessuna e chiede comunque una password, il server non ha riconosciuto la chiave: verifica che la riga in authorized_keys sia completa e che i permessi siano 600.
Chi aveva la chiave non lavora più qui
Oltre ad aggiungere la tua, cancella la sua da authorized_keys (è una riga; il commento finale di solito dice di chi è). E controlla se aveva accesso anche alla console di AWS.
Ho perso la chiave di molte macchine insieme
Ripeti il procedimento su ognuna dal terminale del browser. Se sono molte, è il momento di pensare a un modo centralizzato di entrare che non dipenda da file su portatili.
In Simplio
In Simplio nessuno conserva file di chiavi: il terminale nel browser si apre con un pulsante dalla macchina stessa, chiedendo il codice del doppio fattore, e usa la stessa chiave temporanea di pochi minuti che utilizza la console di Lightsail. L'amministratore decide quali persone possono aprirlo e su quali macchine, e ogni apertura viene registrata con utente, macchina, data e IP. Se una persona lascia l'azienda, le si toglie l'accesso con una casella, su tutte le macchine insieme.
E per il giorno in cui nemmeno la console di Lightsail entra, la chiave di riserva: un utente di emergenza che Simplio lascia nella macchina con un pulsante, senza password, che accetta solo certificati di cinque minuti firmati da Simplio e solo dall'IP di Simplio. Simplio verifica ogni giorno che continui ad aprirsi. Se resti fuori, con il tuo doppio fattore aggiungi all'utente una chiave pubblica nuova o gli metti una password, senza istantanee né macchine nuove. Come funziona la chiave di riserva.
La stessa cosa, in AWS e in Simplio
| Nella console di AWS | In Simplio | |
|---|---|---|
| Rientrare | Console di Lightsail, terminale del browser, generare la chiave, incollarla, provare: 6 passi, 15 minuti e conoscenze di terminale | Pulsante "Terminale" sulla macchina, con doppio fattore: 10 secondi, senza file di chiavi |
| Dare accesso a un'altra persona | Ripetere i passi da 3 a 5 con la sua chiave | Spuntare l'azione "terminale" e la macchina nel suo utente |
| Toglierle l'accesso | Entrare e cancellare la sua riga da authorized_keys su ogni macchina | Deselezionare la casella; resta nel registro delle attività |
| Se il terminale del browser non entra | Istantanea, macchina nuova, spostare l'IP, verificare i servizi: un'ora abbondante e un'interruzione | Con la chiave di riserva creata: "Soccorri" → chiave pubblica nuova o password nuova per l'utente, in un minuto, senza fermare nulla |
| Se non c'è nemmeno un'istantanea | Si perde tutto: non c'è nessuno da chiamare | Istantanee programmate ogni notte, anche in un'altra regione, con avviso se falliscono |