Come posso usare SSH per accedere alla mia istanza EC2 dopo aver modificato il file sshd_config dell'istanza?

6 minuti di lettura
0

Ho modificato il file sshd_config della mia istanza Amazon Elastic Compute Cloud (Amazon EC2) e ora non riesco ad accedere alla mia istanza tramite SSH.

Breve descrizione

La modifica del file sshd_config di un’istanza potrebbe causare un errore di connessione rifiutata durante la connessione tramite SSH.

Per confermare che non puoi accedere all'istanza a causa dell’errore di** connessione rifiutata**, accedi all'istanza tramite SSH con la messaggistica dettagliata attiva. Vedi il seguente esempio:

$ ssh -i "myawskey.pem" ec2-user@ec2-11-22-33-44.eu-west-1.compute.amazonaws.com -vvv

Questo esempio si connette al nome DNS e utilizza** myawskey.pem** per il file della chiave privata, con** ec2-user** come nome utente. Sostituisci il file chiave e il nome utente con il file chiave e il nome utente dell'esempio.

L'output di esempio seguente mostra il messaggio di errore di** connessione rifiutata**:

OpenSSH_7.9p1, LibreSSL 2.7.3
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Connecting to ec2-11-22-33-44.eu-west-1.compute.amazonaws.com port 22.
ssh: connect to host ec2-11-22-33-44.eu-west-1.compute.amazonaws.com port 22: Connection refused

Risoluzione

Nota:Se utilizzi un'istanza basata su Nitro, i nomi dei dispositivi sono diversi dagli esempi forniti nei passaggi seguenti. Ad esempio, anziché /dev/xvda o** /dev/sda1**, il nome del dispositivo su un'istanza basata su Nitro sarà ** /dev/nvme**. Per ulteriori informazioni, consulta Nomi dei dispositivi nelle istanze Linux.

Metodo 1: Usa la console seriale EC2

Se hai attivato la console seriale EC2 per Linux, puoi usarla per risolvere i tipi di istanze supportate da Nitro. La console seriale consente di risolvere problemi di avvio, configurazione di rete e problemi di configurazione SSH. La console seriale si connette all'istanza senza bisogno di una connessione di rete funzionante. Usa la console Amazon EC2 o l'interfaccia della linea di comando AWS (AWS CLI) per accedere alla console seriale.

Prima di utilizzare la console seriale, concedi l'accesso alla console a livello di account. Quindi, crea delle policy AWS Identity and Access Management (IAM) che garantiscono l'accesso ai tuoi utenti IAM. Inoltre, ogni istanza che utilizza la console seriale deve includere almeno un utente basato su password. Se l'istanza non è raggiungibile e non hai configurato l'accesso alla console seriale, segui le istruzioni nella sezione** Metodo 2: Usa un'istanza di ripristino**. Per informazioni sulla configurazione della console seriale EC2 per Linux, consulta Configurare l'accesso alla console seriale EC2.

**Nota:**Se riscontri degli errori durante l'esecuzione dei comandi relativi all’interfaccia della linea di comando AWS, assicurati di utilizzare la versione più recente di AWS CLI.

Metodo 2: Usa un'istanza di ripristino

Avvertenza:

  • Se l'istanza è supportata dall'Instance Store o ha volumi di archivio di istanze che contengono dati, quando si interrompe l’istanza i dati andranno persi. Per ulteriori informazioni, consulta Determinare il tipo di dispositivo root dell'istanza.
  • Se l'istanza fa parte di un gruppo Amazon EC2 Auto Scaling, l'arresto dell'istanza potrebbe causare la chiusura dell'istanza. Le istanze avviate con Amazon EMR, AWS CloudFormation o AWS Elastic Beanstalk potrebbero far parte di un gruppo AWS con scalabilità automatica. La chiusura dell'istanza in questo scenario dipende dalle impostazioni di protezione scalabile dell'istanza per il gruppo con scalabilità automatica. Se l'istanza fa parte di un gruppo con scalabilità automatica, rimuovi temporaneamente l'istanza dal gruppo prima di iniziare i passaggi di risoluzione.
  • L'arresto e l'avvio dell'istanza modifica l'indirizzo IP pubblico dell'istanza. Se vuoi che il tuo indirizzo IP pubblico EC2 rimanga lo stesso al riavvio o alla chiusura dell'istanza, utilizza un indirizzo IP elastico. Se utilizzi Amazon Route 53, potresti dover aggiornare i record DNS della Route 53 quando l'IP pubblico cambia.
  1. Avvia una nuova istanza EC2 nel tuo cloud privato virtuale (VPC). Utilizza la stessa Amazon Machine Image (AMI) nella stessa zona di disponibilità dell'istanza compromessa. La nuova istanza diventa la tua istanza di ripristino.

  2. Arresta l'istanza danneggiata.

  3. Scollega il volume principale di Amazon Elastic Block Store (Amazon EBS) (/dev/xvda o** /dev/sda1**) dall'istanza danneggiata.

  4. Collega il volume EBS come dispositivo secondario** (/dev/sdf**) all'istanza di ripristino.

  5. Usa SSH per connetterti alla tua istanza di ripristino.

  6. Esegui il** comando** lsblk per visualizzare i dispositivi:

$ 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   8G  0 disk
 └─xvdf1 202:81   0   8G  0 part
  1. Crea una directory dei punti di montaggio (/rescue) per il nuovo volume che hai collegato all'istanza di ripristino nel passaggio 4:
$ sudo mkdir /mnt/rescue
  1. Monta il volume nella directory che hai creato nel passaggio 7:
$ sudo mount -t xfs -o nouuid /dev/xvdf1 /mnt/rescue/

Per montare i file system ext3 ed ext4, esegui il seguente comando:

$ sudo mount /dev/xvdf1 /mnt/rescue

Nota:La sintassi del comando mount precedente potrebbe variare. Per ulteriori informazioni, esegui il comando man mount.

  1. Esegui nuovamente il comando** lsblk** per verificare che il volume sia stato montato nella directory:
$ 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   8G  0 disk
└─xvdf1 202:81   0   8G  0 part /mnt/rescue

Correggere o copiare il file sshd\ _config

È possibile esaminare il file** sshd\ _config** sull'istanza danneggiata e, se necessario, ripristinare le modifiche. Usa l'output di messaggistica dettagliata SSH per guidarti alla posizione dell'errore nel file:

$ sudo vi /mnt/rescue/etc/ssh/sshd_config

Oppure, esegui il seguente comando per copiare il file** sshd\ _config** dall'istanza di ripristino all'istanza danneggiata. Questo comando sostituisce il contenuto del file** sshd\ _config** sull'istanza originale:

$ sudo cp /etc/ssh/sshd_config /mnt/rescue/etc/ssh/sshd_config

Ricollega il volume all'istanza originale e verifica la connessione

Nota:Se hai usato il Metodo 2: Usa un'istanza di ripristino, quindi completa i seguenti passaggi.

  1. Esegui il comando** umount** per smontare il volume:
$ sudo umount /mnt/rescue/
  1. Scollegare il volume secondario dall'istanza di ripristino, quindi collegare il volume all'istanza originale come** /dev/xvda** (volume root).

  2. Avvia l'istanza.

  3. Connettiti all'istanza tramite SSH per verificare di poter raggiungere l'istanza.

Informazioni correlate

Perché non riesco a connettermi alla mia istanza Amazon EC2 Linux tramite SSH?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa