Salta al contenuto

Come posso ripristinare la connessione alla mia istanza EC2?

9 minuti di lettura
0

Ho perso la connessione alla mia istanza Amazon Elastic Compute Cloud (Amazon EC2) e desidero ripristinare l'accesso.

Breve descrizione

Innanzi tutto, risolvi i problemi dell'istanza EC2 in base allo stato dell'istanza e del sistema.

Se ancora non riesci a connetterti, ripristina la connessione SSH, EC2 Instance Connect o Gestione sessione, una funzionalità di AWS Systems Manager. Oppure utilizza la Console seriale EC2 per provare a ripristinare la connessione.

Nota: in genere, la Console seriale EC2 serve solo per risolvere i problemi, non per eseguire processi standard.

Se il metodo di connessione non funziona, utilizza un altro metodo di connessione per accedere all'istanza e risolvere i problemi.

Se ancora non riesci a ripristinare la connessione, utilizza un'istanza di ripristino per verificare la presenza di errori nei log dell'istanza interessata.

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Controlla lo stato dell'istanza e del sistema

Utilizza la console Amazon EC2 per verificare se lo stato del sistema e lo stato dell'istanza mostrano entrambi OK. Puoi anche utilizzare le metriche di Amazon CloudWatch per verificare lo stato dell'istanza e identificare i problemi che influiscono sulla connettività.

Nota: è consigliabile verificare la manutenzione programmata e altri eventi che possono influire sulla connettività dell'istanza.

Se lo stato del sistema non è OK, il problema potrebbe essere l'infrastruttura AWS. Per risolverlo, consulta Perché la mia istanza EC2 Linux non ha superato il controllo dello stato del sistema?

Se lo stato dell'istanza non è OK, riavvia l'istanza. Il riavvio di un'istanza in genere risolve problemi minori. Se ancora non riesci a connetterti, arresta e avvia l'istanza per eseguirne la migrazione su un hardware integro.

Nota: quando arresti e avvii un'istanza, l'indirizzo IP pubblico dell'istanza cambia. È consigliabile utilizzare un indirizzo IP elastico per indirizzare il traffico esterno all'istanza anziché un indirizzo IP pubblico.

Ripristina la connessione SSH

Verifica le regole dei gruppi di sicurezza

Assicurati che le regole dei gruppo di sicurezza in entrata consentano l'accesso alla porta 22 dall'indirizzo IP. Per verificare le regole dei gruppo di sicurezza, esegui questo comando AWS CLI describe-security-groups:

aws ec2 describe-security-groups --group-ids SG-IDs

Nota: sostituisci SG-IDs con gli ID dei tuoi gruppo di sicurezza.

Se non riesci ad accedere alla porta 22, esegui questo comando authorize-security-group-ingress per aggiornare le regole e consentire l'accesso:

aws ec2 authorize-security-group-ingress --group-id SG-ID --protocol tcp --port 22 --cidr SOURCE-IP/32

Nota: sostituisci SG-ID con l'ID del tuo gruppo di sicurezza e SOURCE-IP con il tuo indirizzo IP di origine. Se l'indirizzo IP di origine è un indirizzo IP pubblico, puoi utilizzare lo strumento checkip.amazonaws per identificare l'indirizzo IP.

Rivedi le ACL

Per impostazione predefinita, le liste di controllo degli accessi alla rete (ACL) consentono tutto il traffico in entrata e in uscita. Assicurati che le ACL consentano l'accesso SSH in entrata all'istanza e l'accesso in uscita alle porte effimere (1024-65535). Se le ACL bloccano la porta 22, aggiungi una nuova regola per consentire il traffico. Per gli indirizzi IP pubblici, assicurati che la tabella di routing contenga una voce che indirizza il traffico verso un gateway Internet.

Controlla le impostazioni del nome utente e dell'indirizzo IP

Assicurati di utilizzare il nome utente corretto per l'istanza. Quindi connettiti all'istanza da un indirizzo IP pubblico.

Nota: se ti connetti da un indirizzo IP privato, assicurati di disporre di una connessione di rete funzionante all'istanza di destinazione.

Controlla lo stato del server SSH

Per verificare lo stato del server SSH, utilizza Gestione sessione, EC2 Instance Connect o la Console seriale EC2 per connetterti all'istanza.

Esegui questo comando per verificare lo stato del servizio SSH in base alla distribuzione:

Sistemi che utilizzano systemd:

sudo systemctl status sshd

Sistemi Ubuntu o Debian:

sudo systemctl status ssh

Sistemi legacy, come CentOS 6:

sudo service sshd status

Se lo stato del servizio SSH è Arrestato, esegui questo comando per avviare il servizio in base alla distribuzione:

Sistemi che utilizzano systemd:

sudo systemctl start sshd

Sistemi Ubuntu o Debian:

systemctl start ssh

Sistemi legacy, come CentOS 6:

sudo service sshd start

Controlla le autorizzazioni dei file della chiave privata

Assicurati che il file della chiave privata abbia l'autorizzazione di sola lettura.

Verifica la connettività di rete

Per testare la connettività alla porta 22, esegui uno di questi comandi dal client:

nc -zv Host 22

-oppure-

telnet Host 22

Nota: sostituisci Host con il tuo indirizzo IP o il nome di dominio completo (FQDN).

Quindi esegui questo comando per utilizzare la connessione SSH all'istanza in modalità dettagliata:

ssh -i key_pair.pem user@Host -vvv

Nota: sostituisci Host con il tuo indirizzo IP o l'FQDN.

Per risolvere i problemi di connessione, consulta Come posso risolvere gli errori "Connection refused" o "Connection timed out" quando utilizzo SSH per connettermi alla mia istanza EC2? e Risolvi i problemi di connessione alla tua istanza Amazon Linux EC2.

Ripristina la connessione EC2 Instance Connect

Innanzi tutto, utilizza SSH, Gestione sessione o la Console seriale EC2 per connetterti all'istanza e assicurarti di aver installato EC2 Instance Connect. Quindi utilizza EC2 Instance Connect per connetterti all'istanza.

Se riscontri problemi durante l'utilizzo di EC2 Instance Connect, intraprendi le seguenti azioni:

Se i problemi persistono, consulta Come posso risolvere i problemi che si verificano quando utilizzo EC2 Connect per connettermi a un'istanza EC2?

Utilizza la Console seriale EC2 per ripristinare la connessione

Prerequisito: configura l'accesso alla Console seriale EC2.

Per connetterti all'istanza utilizzando la Console seriale EC2, puoi utilizzare la console Amazon EC2 o SSH. Per ulteriori informazioni, consulta Come posso accedere alla console seriale EC2 di un'istanza Linux irraggiungibile o inaccessibile?

Dopo la connessione, risolvi i problemi dell’istanza relativi all'avvio, alla configurazione di rete o di altra natura.

Se riscontri problemi quando utilizzi la Console seriale EC2, assicurati che la policy IAM includa l'azione ec2-instance-connect:SendSerialConsoleSSHPublicKey.

Dopo aver utilizzato la Console seriale EC2 per connetterti all'istanza, puoi utilizzare GRUB per risolvere i problemi.

Ripristina la connessione a Gestione sessione

Gestione sessione gestisce l'autenticazione solo tramite ruoli e autorizzazioni IAM anziché tramite chiavi SSH. Prima di utilizzare Systems Manager, assicurati di rispettare i prerequisiti per Gestione sessione. Quindi utilizza Gestione sessione per connetterti all'istanza.

Se riscontri problemi durante l'utilizzo di Gestione sessione, intraprendi le seguenti azioni.

Controlla i ruoli IAM

Verifica che l'istanza abbia un ruolo IAM con la policy AmazonSSMManagedInstanceCore collegata.

In alternativa, assicurati che il ruolo abbia le seguenti autorizzazioni richieste:

  • ssmmessages:CreateControlChannel
  • ssmmessages:CreateDataChannel
  • ssmmessages:OpenControlChannel
  • ssmmessages:OpenDataChannel

Puoi aggiungere le autorizzazioni richieste per Gestione sessione a un ruolo esistente.

Nota: se utilizzi la configurazione predefinita di gestione degli host per gestire le istanze, non serve che crei un profilo dell'istanza IAM per gestirle.

Se aggiorni le autorizzazioni, scollega e ricollega il ruolo IAM. Attendi un paio di minuti, quindi avvia l'Agente AWS Systems Manager (Agente SSM) o avvia l'istanza.

Risolvi i problemi relativi allo stato dell'Agente SSM

Verifica di aver installato l'Agente SSM Agent sull'istanza.

Utilizza SSH, la Console seriale EC2 o EC2 Instance Connect per connetterti all'istanza, quindi esegui questi comandi per sistemi che utilizzano systemd:

sudo systemctl status amazon-ssm-agent
sudo systemctl start amazon-ssm-agent  # if stopped

Per sistemi Debian o Ubuntu, esegui questo comando:

sudo systemctl status snap.amazon-ssm-agent.amazon-ssm-agent.service
sudo systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service  # if stopped

Per verificare che l'Agente SSM sia in esecuzione, controlla il log di sistema.

È consigliabile utilizzare l'ultima versione dell'Agente SSM. Per verificare se disponi della versione più recente, consulta amazon-ssm-agent/RELEASENOTES sul sito web GitHub. Se non disponi della versione più recente, installa un Agente SSM aggiornato in base al sistema operativo.

Per risolvere ulteriormente i problemi, controlla gli eventuali errori nei log /var/log/amazon/ssm/amazon-ssm-agent.log. In alternativa, consulta Risoluzione dei problemi dell'Agente SSM.

Verifica la connettività di rete

Assicurati che le ACL e i gruppi di sicurezza consentano una connessione in uscita all'endpoint di Systems Manager sulla porta 443.

Se l'istanza non appare in Gestione sessione, consulta Perché Systems Manager non mostra la mia istanza Amazon EC2 come istanza gestita?

Per istanze private, crea endpoint VPC (Virtual Private Cloud). Per Nome del servizio, seleziona com.amazonaws.REGION.ssm e com.amazonaws.REGION.ssmmessages.

Nota: sostituisci REGION con la tua Regione AWS.

Il gruppo di sicurezza che colleghi agli endpoint VPC deve consentire il traffico in entrata sulla porta 443.

Per ulteriori informazioni, consulta Impossibile connettersi agli endpoint SSM.

Verifica i prerequisiti mancanti

Utilizza SSH, la Console seriale EC2 o EC2 Instance Connect per connetterti all'istanza, quindi esegui questo comando per risolvere i problemi di disponibilità dei nodi gestiti:

sudo ssm-cli get-diagnostics --output table

Controlla l'output per i prerequisiti di Gestione sessione che ti mancano.

Oppure esegui uno di questi runbook di Systems Manager per verificare automaticamente i prerequisiti mancanti:

Controlla i log della console dell'istanza

Se non riesci a utilizzare i metodi precedenti per connetterti all'istanza, esegui questo script di dati utente per ripristinare la connessione a Gestione sessione:

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:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash

sudo ssm-cli get-diagnostics --output table >> /dev/console
# or
sudo ssm-cli get-diagnostics --output table >> /dev/ttyS0

Quindi controlla l'output della console dell'istanza per identificare la fase di connessione che non riesce. Dopo aver risolto il passaggio non riuscito, utilizza Gestione sessione per testare la connessione.

Se ancora non riesci a connetterti, utilizza un'istanza di ripristino per risolvere i problemi di avvio.

Informazioni correlate

Perché non riesco a connettermi alla mia istanza EC2?