Come posso connettermi alla mia istanza di Amazon EC2 se ho perso la mia coppia di chiavi SSH dopo l’avvio iniziale?

5 minuti di lettura
0

Desidero connettermi alla mia istanza di Amazon Elastic Compute Cloud (Amazon EC2) ma ho perso la coppia di chiavi SSH.

Risoluzione

Importante:

i metodi 1, 2 e 3 richiedono l'arresto e l'avvio dell'istanza. Tieni presente quanto segue:

  • se l'istanza è supportata dall’archivio dell’istanza o ha volumi di archivio dell’istanza che contengono dati, i dati vengono persi quando si arresta l'istanza. Per ulteriori informazioni, consulta Determine the root device type of your instance. Assicurati di eseguire il backup di tutti i dati che desideri conservare nel volume dell'archivio dell’istanza.
  • L'arresto e l'avvio dell'istanza modificano l'indirizzo IP pubblico della stessa. Quando si instrada il traffico esterno verso l'istanza, è consigliabile utilizzare un indirizzo IP elastico anziché un indirizzo IP pubblico.

Metodo 1: inserisci i dati utente

1.    Crea una nuova coppia di chiavi.

2.    Se crei la chiave privata nella console Amazon EC2, recupera la chiave pubblica per la coppia di chiavi.

3.    Apri la console Amazon EC2.

4.    Interrompi l’istanza.

5.    Scegli Azioni, Impostazioni dell'istanza, Modifica dati utente.

6.    Copia il seguente script nella finestra di dialogo Modifica dati utente:

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [users-groups, once]
users:
  - name: username
    ssh-authorized-keys:
    - PublicKeypair

Sostituisci il nome utente con il tuo nome utente, ad esempio ec2-user. È possibile immettere il nome utente predefinito o inserire un nome utente personalizzato, se in precedenza ne è stato impostato uno per l'istanza. Per un elenco di nomi utente predefiniti, consulta Get information about your instance.

Sostituisci PublicKeypair con la chiave pubblica recuperata al passaggio 2. Assicurati di inserire l'intera chiave pubblica, iniziando da ssh-rsa.

7.    Scegli Salva.

8.    Avvia l’istanza.

9.    Al termine della fase cloud-init, verifica che la chiave pubblica sia stata sostituita.

Importante: poiché lo script contiene una coppia di chiavi, rimuovi lo script dal campo Dati utente.

10.    Interrompi l’istanza.

11.    Scegli Azioni, Impostazioni dell'istanza, Modifica dati utente.

12.    Elimina tutto il testo nella finestra di dialogo Modifica dati utente, quindi scegli Salva.

13.    Avvia l’istanza.

Metodo 2: usa AWS Systems Manager

Se l’istanza è un’istanza gestita in AWS Systems Manager, utilizza il documento AWSSupport-ResetAccess per recuperare la coppia di chiavi persa. AWSSupportResetAccess genera e aggiunge automaticamente una nuova coppia di chiavi SSH (pubblica/privata) utilizzando lo strumento EC2 Rescue per Linux sull'istanza EC2 specificata.

La nuova chiave privata SSH per l’istanza viene crittografata e salvata in Parameter Store, una funzionalità di AWS Systems Manager. Il nome del parametro è /ec2rl/openssh/instance_id/key.

Usa il seguente comando per recuperare la chiave SSH privata da Parameter Store:

$ aws ssm get-parameters --names "/ec2rl/openssh/instance_id/key" --with-decryption --output json --query  "Parameters[0].Value" | sed 's:\\n:\n:g; s:^"::; s:"$::' >  key-pair-name

Nota: assicurati di sostituire instance_id con il tuo ID istanza e di sostituire key-pair-name con il nome della tua coppia di chiavi.

Crea quindi un nuovo file .pem con il valore di questo parametro come contenuto e usalo per riconnetterti alla tua istanza irraggiungibile. Usa il seguente comando per convertire la chiave privata in un file .pem:

$ ssh-keygen -f key-pair-name -e -m pem > key-pair-name.pem

Nota: assicurati di sostituire key-pair-name con il nome della tua coppia di chiavi.

Il flusso di lavoro di automazione crea una Amazon Machine Image (AMI) di backup abilitata da password. La nuova AMI non viene eliminata automaticamente e resta nell’account.

Per individuare queste AMI:

1.    Apri la console Amazon EC2, quindi scegli AMI.

2.    Inserisci l'ID di esecuzione di automazione nel campo di ricerca.

Metodo 3: usa Amazon EC2 Instance Connect

Se la tua istanza è Amazon Linux 2 2.0.20190618 o versione successiva, incluso Amazon Linux 2023, puoi utilizzare EC2 Instance Connect per connetterti all'istanza.

Metodo 4: usa la Console seriale EC2

Se hai attivato la Console seriale EC2 per Linux, puoi utilizzarla per risolvere i problemi relativi ai tipi di istanze basate su Nitro supportati. La console seriale consente di risolvere problemi di avvio, configurazione di rete e configurazione SSH. La console seriale si connette all'istanza senza richiedere una connessione di rete funzionante. Puoi accedere alla console seriale utilizzando la console Amazon EC2 o l'interfaccia della linea di comando AWS (AWS CLI).

Prima di utilizzare la console seriale, concedile l'accesso a livello di account. Quindi crea delle policy AWS Identity and Access Management (IAM) che concedano l'accesso ai tuoi utenti IAM. Inoltre, ogni istanza che utilizza la console seriale deve includere almeno un utente basato su password. Se la tua istanza non è raggiungibile e non hai configurato l'accesso alla console seriale, segui le istruzioni riportate al metodo 1, metodo 2 o metodo 3. Per informazioni sulla configurazione della Console seriale EC2 per Linux, consulta Configure access to the EC2 Serial Console.

Nota: se ricevi errori durante l'esecuzione dei comandi AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Informazioni correlate

Run commands on your Linux instance at launch

Automazione AWS Systems Manager

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa