Connessione all'istanza Linux in caso di perdita della chiave privata - Amazon Elastic Compute Cloud

Connessione all'istanza Linux in caso di perdita della chiave privata

Se si perde la chiave privata per un'istanza supportata da EBS, è possibile riottenere l'accesso all'istanza. Arrestare l'istanza, distaccarne il volume root e collegarlo a un'altra istanza come volume dati, modificare il file authorized_keys con una nuova chiave pubblica, riportare il volume all'istanza originale e riavviare l'istanza. Per ulteriori informazioni sull'avvio, la connessione e l'arresto delle istanze, consulta Ciclo di vita dell'istanza.

Questa procedura è supportata solo per le istanze con volumi root EBS. Se il dispositivo principale è un volume dell'instance store, non è possibile utilizzare questa procedura per riconquistare l'accesso all'istanza; è necessario disporre della chiave privata per connettersi all'istanza. Per determinare il tipo di dispositivo root dell'istanza, aprire la console Amazon EC2, scegliere Instances (Istanze), selezionare l'istanza e verificare il valore di Root device type (Tipo di dispositivo root) nel riquadro dei dettagli. Il valore è ebs o instance store.

In aggiunta ai passaggi seguenti, esistono altri modi per connettersi all'istanza Linux in caso di perdita della chiave privata. Per ulteriori informazioni, consulta Come posso connettermi alla mia istanza Amazon EC2 se ho perso la mia coppia di chiavi SSH dopo il suo avvio iniziale?

Fase 1: creazione di una nuova coppia di chiavi

Creare una nuova coppia di chiavi tramite la console Amazon EC2 o uno strumento di terza parte. Se si vuole assegnare alla nuova coppia di chiavi lo stesso nome della chiave privata persa, bisogna prima eliminare la coppia di chiavi esistente. Per informazioni su come creare una coppia di chiavi, consulta Creazione di una coppia di chiavi utilizzando Amazon EC2 o Creazione di una coppia di chiavi tramite uno strumento di terza parte e importazione della chiave pubblica in Amazon EC2.

Fase 2: Ottenere informazioni sull'istanza originale e il relativo volume radice

Prendere nota delle seguenti informazioni perché sono necessarie per completare questa procedura.

Per ottenere informazioni sull'istanza originale

  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel riquadro di navigazione scegliere Instances (Istanze) e selezionare l'istanza a cui ci si vuole connettere. (Ci si riferirà a questa come istanza originale).

  3. Nella scheda Details (Dettagli), prendere nota dell'ID istanza e dell'ID AMI.

  4. Nella scheda Networking (Reti), prendere nota della zona di disponibilità.

  5. Nella scheda Storage, annota il nome del dispositivo per il volume root in Root device name (Nome dispositivo root) (ad esempio /dev/xvda). Quindi, trova il nome di questo dispositivo in Block devices (Dispositivi a blocchi) e annota l'ID volume (ad esempio, vol-0a1234b5678c910de).

Fase 3: Arrestare l'istanza originale

Scegli Instance state (Stato istanza), Stop instance (Arresta istanza). Se questa opzione è disabilitata, l'istanza è già arrestata o il suo dispositivo root è un volume di instance store.

avvertimento

Quando interrompi un'istanza, i dati presenti sui volumi dell'instance store vengono cancellati. Per non perdere i dati dei volumi di archivio istanza, è opportuno creare una copia di backup nell'archiviazione persistente.

Fase 4: Avviare un'istanza temporanea

Scegliere Launch instances (Avvia istanze), quindi utilizzare la procedura guidata di avvio per avviare un'istanza temporanea con le seguenti opzioni:

  • Nella pagina Choose an AMI (Scegli un'AMI), selezionare la stessa AMI utilizzata per avviare l'istanza originale. Se questa AMI non è disponibile, è possibile creare un'AMI che può essere utilizzata dall'istanza arrestata. Per ulteriori informazioni, consulta Creazione di un'AMI Linux supportata da Amazon EBS.

  • Nella pagina Choose an Instance Type (Scegli un tipo di istanza), lasciare il tipo di istanza predefinita selezionata dalla procedura guidata.

  • Nella pagina Configure Instance Details (Configura dettagli istanza) specificare la stessa zona di disponibilità dell'istanza originale. Se si sta avviando un'istanza in un VPC, selezionare una sottorete in questa zona di disponibilità.

  • Nella pagina Add Tags (Aggiungi tag), aggiungere il tag Name=Temporary all'istanza per indicare che si tratta di un'istanza temporanea.

  • Nella pagina Revisione, selezionare Launch (Avvia). Seleziona la coppia di chiavi che hai creato nella Fase 1, quindi seleziona Launch Instances (Avvia istanze).

Fase 5: scollegare il volume radice dall'istanza originale e collegarlo all'istanza temporanea

  1. Nel riquadro di navigazione, selezionare Volumes (Volumi), quindi selezionare il volume dispositivo root per l'istanza originale (l'ID del volume è stato annotato in una fase precedente). Selezionare Actions (Operazioni), Detach Volume (Distacca volume) e selezionare Yes, Detach (Sì, distacca). Attendere che lo stato del volume diventi available. (Potrebbe essere necessario scegliere l'icona Refresh (Aggiorna)).

  2. Con il volume ancora selezionato, scegliere Actions (Operazioni), quindi selezionare Attach Volume (Collega volume). Selezionare l'ID istanza dell'istanza temporanea, prendere nota del nome del dispositivo specificato sotto Device (Dispositivo) (ad esempio, /dev/sdf), quindi scegliere Attach (Collega).

    Nota

    Se l'istanza originale è stata avviata da un'AMI AWS Marketplace e il volume contiene i codici AWS Marketplace , è prima necessario arrestare l'istanza temporanea per poter collegare il volume.

Fase 6: aggiungere la nuova chiave pubblica a authorized_keys sul volume originale montato sull'istanza temporanea

  1. Connettersi all'istanza temporanea.

  2. Dall'istanza temporanea, montare il volume collegato all'istanza in modo da poter accedere al file system. Ad esempio, se il nome del dispositivo è /dev/sdf, utilizzare i seguenti comandi per montare il volume come /mnt/tempvol.

    Nota

    Il nome del dispositivo potrebbe apparire in modo diverso nell'istanza. Ad esempio, i dispositivi montati come /dev/sdf potrebbero essere visualizzati come /dev/xvdf nell'istanza. Alcune versioni di Red Hat (o le relative varianti, come CentOS), potrebbero anche aggiungere alla lettera finale 4 caratteri, in modo che /dev/sdf diventi /dev/xvdk.

    1. Utilizzare il comando lsblk per determinare se il volume è partizionato.

      [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 101G 0 disk └─xvdf1 202:81 0 101G 0 part xvdg 202:96 0 30G 0 disk

      Nell'esempio precedente, /dev/xvda e /dev/xvdf sono volumi partizionati, mentre /dev/xvdg non lo è. Se il volume è partizionato, montare la partizione (/dev/xvdf1) invece del dispositivo raw (/dev/xvdf) nelle fasi successive.

    2. Creare una directory temporanea per montare il volume.

      [ec2-user ~]$ sudo mkdir /mnt/tempvol
    3. Montare il volume (o la partizione) nel punto di montaggio temporaneo, utilizzando il nome del volume o del dispositivo identificato in precedenza. Il comando necessario dipende dal file system del sistema operativo.

      • Amazon Linux, Ubuntu e Debian

        [ec2-user ~]$ sudo mount /dev/xvdf1 /mnt/tempvol
      • Amazon Linux 2, CentOS, SUSE Linux 12 e RHEL 7.x

        [ec2-user ~]$ sudo mount -o nouuid /dev/xvdf1 /mnt/tempvol
    Nota

    Se si riceve un errore che indica che il file system è corrotto, eseguire il seguente comando per utilizzare l'utilità fsck per controllare il file system e risolvere qualsiasi guasto:

    [ec2-user ~]$ sudo fsck /dev/xvdf1
  3. Dall'istanza temporanea, utilizzare il seguente comando per aggiornare authorized_keys nel volume montato con la nuova chiave pubblica da authorized_keys per l'istanza temporanea.

    Importante

    Gli esempi seguenti utilizzano il nome utente di Amazon Linux ec2-user. Potrebbe essere necessario sostituire un nome utente diverso, ad esempio ubuntu per le istanze di Ubuntu.

    [ec2-user ~]$ cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Se la copia ha avuto successo, è possibile passare alla fase successiva.

    (Facoltativo) Altrimenti, se non si ha il permesso di modificare i file in /mnt/tempvol, sarà necessario aggiornare il file utilizzando sudo, quindi occorrerà controllare le autorizzazioni sul file per verificare di poter accedere all'istanza originale. Utilizzare il comando seguente per verificare le autorizzazioni per il file:

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh total 4 -rw------- 1 222 500 398 Sep 13 22:54 authorized_keys

    In questo esempio di output, 222 è l'ID utente e 500 è l'ID di gruppo. Quindi, utilizzare sudo per eseguire nuovamente il comando di copia non riuscito.

    [ec2-user ~]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Eseguire nuovamente il comando seguente per stabilire se le autorizzazioni sono state modificate.

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh

    Se l'ID utente e l'ID gruppo sono stati modificati, utilizzare il seguente comando per ripristinarli.

    [ec2-user ~]$ sudo chown 222:500 /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

Fase 7: smontare e scollegare il volume originale dall'istanza temporanea e ricollegarlo all'istanza originale

  1. Dall'istanza temporanea, smontare il volume collegato all'istanza in modo da ricollegarlo all'istanza originale. Ad esempio, utilizzare il seguente comando per smontare il volume in /mnt/tempvol.

    [ec2-user ~]$ sudo umount /mnt/tempvol
  2. Scollegare il volume dall'istanza temporanea (è stato smontato nel passaggio precedente): dalla console Amazon EC2 selezionare il volume del dispositivo root per l'istanza originale (è stato annotato l'ID del volume in un passaggio precedente), scegliere Actions (Operazioni), Detach Volume (Scollega volume), quindi selezionare Yes, Detach (Sì, scollega). Attendere che lo stato del volume diventi available. (Potrebbe essere necessario scegliere l'icona Refresh (Aggiorna)).

  3. Ricollegare il volume all'istanza originale: con il volume ancora selezionato, scegliere Actions (Operazioni), Attach Volume (Collega volume). Selezionare l'ID dell'istanza originale, specificare il nome del dispositivo annotato in precedenza nella Fase 2 per il collegamento del dispositivo root originale (/dev/sda1 o /dev/xvda), quindi scegliere Collega.

    Importante

    Se non si specifica lo stesso nome del dispositivo dell'allegato originale, non è possibile avviare l'istanza originale. Amazon EC2 prevede il volume del dispositivo di root su sda1 o /dev/xvda.

Fase 8: connettersi all'istanza originale utilizzando la nuova coppia di chiavi

Seleziona l'istanza originale, scegli Instance state (Stato istanza), Start instance (Avvia istanza). Dopo che l'istanza acquisisce lo stato running, è possibile connettersi a essa tramite il file della chiave privata per la nuova coppia di chiavi.

Nota

Se il nome della nuova coppia di chiavi e del corrispondente file di chiave privata è diverso dal nome della coppia di chiavi originale, assicurarsi di specificare il nome del nuovo file della chiave privata quando ci si connette all'istanza.

Fase 9: pulizia

(Facoltativo) È possibile terminare l'istanza temporanea se non la si utilizza più. Selezionare l'istanza temporanea e scegliere Instance state (Stato istanza), Terminate instance (Termina istanza).