Come posso risolvere gli errori "Connection refused" o "Connection timed out" quando utilizzo SSH per connettermi alla mia istanza EC2?
Quando utilizzo SSH per connettermi alla mia istanza Amazon Elastic Compute Cloud (Amazon EC2), ricevo errori "Connection refused" o "Connection timed out".
Breve descrizione
Se la connessione si interrompe, ricevi il seguente messaggio di errore dal client SSH:
"ssh: connect to host ec2-X-X-X-X.compute-1.amazonaws.com port 22: Connection timed out"
L'errore Connection timed out si verifica quando il server non risponde al client e il programma client si arrende (timeout).
Se un host rifiuta la connessione da remoto, ricevi il seguente messaggio di errore:
"ssh: connect to host ec2-X-X-X-X.compute-1.amazonaws.com port 22: Connection refused"
Risoluzione
Errore "Connection timed out"
Se ricevi l'errore Connection timed out, verifica le seguenti configurazioni:
- L'indirizzo IP o il nome host dell'istanza è corretto.
- L'istanza supera i controlli dell'integrità.
- Il gruppo di sicurezza dell'istanza consente il traffico in entrata sulla porta TCP 22.
- Le liste di controllo degli accessi alla rete (ACL) della sottorete dell'istanza consentono il traffico in entrata sulla porta TCP 22 e il traffico in uscita sulle porte effimere.
- La tabella di routing della sottorete dell'istanza fornisce la connettività tra l'istanza e il client SSH.
- Non è presente un firewall che blocca la connessione tra il client SSH e l'istanza.
- I wrapper TCP dell'istanza non bloccano SSH. Per ulteriori informazioni, consulta 2.6.2. TCP Wrappers configuration files (2.6.2. File di configurazione dei wrapper TCP) sul sito web di Red Hat.
Nota: per verificare eventuali problemi con il firewall o i wrapper TCP, devi avere accesso all'istanza a livello di sistema operativo.
Errore "Connection refused"
Se ricevi l'errore Connection refused, verifica le seguenti configurazioni:
- Non è presente un firewall sull'istanza che blocca la connessione SSH.
- Il daemon SSH (sshd) è in esecuzione e in ascolto sulla porta 22.
Nota: per verificare le configurazioni precedenti, devi avere accesso all'istanza a livello di sistema operativo.
Risolvi i problemi relativi alle istanze che superano entrambi i controlli dell'integrità
Per risolvere i problemi relativi alle istanze che superano i controlli dell'integrità, utilizza uno dei seguenti metodi di risoluzione.
Esegui il runbook AWSSupport-TroubleshootSSH
È consigliabile eseguire il runbook di automazione AWSSupport-TroubleshootSSH. Il runbook installa lo strumento Amazon EC2Rescue sull'istanza per identificare e risolvere i problemi che bloccano una connessione SSH remota a un host Linux.
Utilizza la Console seriale EC2 per Linux
Per risolvere problemi a livello di sistema operativo come problemi di avvio, problemi di configurazione di rete e problemi di configurazione SSH sui tipi di istanza supportati, utilizza la Console seriale EC2 per Linux.
Prerequisiti:
- Concedi l'accesso alla console a livello di account AWS.
- Crea policy AWS Identity and Access Management (AWS IAM) che concedano l'accesso alla console agli utenti IAM.
Nota: ogni istanza che utilizza la Console seriale EC2 deve avere almeno un utente Linux basato su password con accesso sudo.
Per ulteriori informazioni, consulta Configura l'accesso alla Console seriale EC2.
Se non è presente un account Linux con una password di accesso configurata, devi eseguire il comando ssm-user per reimpostare la password per un account con accesso sudo.
Per verificare che la configurazione non stia bloccando l'accesso SSH, completa i seguenti passaggi:
-
Utilizza la Console seriale EC2 per connetterti all'istanza EC2 come utente Linux configurato con password.
-
Se hai configurato le regole di iptables, esegui questo comando per aggiungere una regola in iptables che accetti tutte le connessioni SSH sulla porta 22:
sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT -
Se utilizzi un firewall basato sul sistema operativo, disattivalo. È consigliabile utilizzare gruppi di sicurezza anziché un firewall. Per disattivare il firewall basato sul sistema operativo, esegui questi comandi a seconda del sistema operativo utilizzato.
Importante: i seguenti comandi cancellano tutte le principali regole di iptables ed eliminano le regole esistenti. I comandi aggiungono anche una regola che consente le connessioni SSH in entrata e modificano la policy predefinita della catena principale in ACCEPT. Grazie a configurazione, la connettività di rete dell'istanza non subisce alcuna variazione quando cancelli la regola di iptables.
Distribuzioni che utilizzano UFW come Ubuntu e Debian:sudo iptables -F$ sudo iptables -P INPUT ACCEPT sudo ufw disableDistribuzioni che utilizzano firewalld come Red Hat Enterprise Linux (RHEL) e CentOS:
sudo iptables -F $ sudo iptables -P INPUT ACCEPT sudo systemctl disable firewalldNota: dopo aver riottenuto l'accesso all'istanza, controlla la configurazione del firewall.
-
Per verificare che SSH sia in esecuzione e che la porta SSH TCP 22 sia in stato di ascolto, esegui questo comando:
sudo systemctl restart sshd$ sudo ss -tpln | grep -iE '22|ssh'LISTEN 0 128 *:22 *:* users:(("sshd",pid=1901,fd=3)) LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1901,fd=4))Nota: se il sistema non ha il comando ss, sostituisci ss con il comando netstat legacy. Assicurati di utilizzare la stessa sintassi del comando precedente.
-
Per accertarti che il wrapper TCP non blocchi una connessione SSH, esegui questo comando:
if [[ $( cat /etc/hosts.[ad]* | grep -vE '^#' | awk 'NF' | wc -l) -ne 0 ]];\ then sudo sed -i '1i sshd2 sshd : ALL: allow' /etc/hosts.allow; fi
Utilizza Systems Manager
Prerequisiti: per utilizzare Gestione sessione, una funzionalità di AWS Systems Manager, l'istanza deve essere un nodo gestito. Lo stato di ping dell'Agente AWS Systems Manager (Agente SSM) dell'istanza deve essere Online e il ruolo IAM associato deve disporre delle autorizzazioni AmazonSSMManagedInstanceCore. Assicurati di rispettare tutti i prerequisiti di Gestione sessione.
Utilizza Gestione sessione per avviare una sessione e per accedere all'istanza.
Utilizza uno script con dati utente
Se non riesci a utilizzare i metodi di risoluzione precedenti, utilizza uno script con dati utente per disattivare il firewall a livello di sistema operativo e il wrapper TCP. Riavvia il servizio sshd.
Importante: prima di arrestare e avviare l'istanza, intraprendi le seguenti azioni:
- Crea un backup del volume Amazon Elastic Block Store (Amazon EBS).
Nota: se l'istanza è supportata da un archivio dell'istanza o ha volumi di storage dell'istanza contenenti dati, Amazon EC2 elimina i dati quando arresti l'istanza. - Rimuovi temporaneamente l'istanza dal relativo gruppo Amazon EC2 Auto Scaling quando completi i passaggi di risoluzione.
Nota: se arresti un'istanza che si trova in un gruppo EC2 Auto Scaling, potresti terminare l'istanza in base alle impostazioni di protezione dalla riduzione orizzontale. Le istanze avviate con Amazon EMR, AWS CloudFormation o AWS Elastic Beanstalk potrebbero far parte di un gruppo Auto Scaling. - Imposta il comportamento di chiusura dell'istanza su Arresta per assicurarti che le istanze non terminino quando le arresti.
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.
Per configurare i dati utente per l'istanza, completa i seguenti passaggi:
- Apri la console Amazon EC2.
- Seleziona Istanze dal pannello di navigazione, quindi seleziona l'istanza.
- Arresta l'istanza.
- Scegli Operazioni, quindi scegli Impostazioni dell'istanza.
- Scegli Modifica dati utente, quindi inserisci il seguente script con dati utente:
Nota: lo script con dati utente precedente è impostato per essere eseguito al riavvio di ogni istanza. Questo metodo rimuove tutte le principali regole di iptables.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 iptables -P INPUT ACCEPT iptables -F systemctl restart sshd.service || service sshd restart if [[ $( cat /etc/hosts.[ad]* | grep -vE '^#' | awk 'NF' | wc -l) -ne 0 ]];\ then sudo sed -i '1i sshd2 sshd : ALL: allow' /etc/hosts.allow; fi --// - Scegli Salva.
- Utilizza SSH per connetterti all'istanza.
- Dopo aver riottenuto l'accesso all'istanza, rimuovi lo script con dati utente e verifica che la configurazione del firewall sia esatta.
Informazioni correlate
Errore di connessione all'istanza: Connection timed out
Come posso risolvere gli errori di timeout della connessione dell'istanza Amazon EC2 da Internet?
In che modo posso risolvere i problemi di connessione alla mia istanza Linux Amazon EC2 tramite SSH?
Perché la mia istanza EC2 Linux è irraggiungibile e non supera i controlli di stato?
- Argomenti
- End User ComputingCompute
- Lingua
- Italiano
Video correlati

