Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Come posso risolvere gli errori “Permission denied (publickey)” o “Authentication failed, permission denied” quando accedo alla mia istanza EC2?
Quando accedo alla mia istanza Amazon Elastic Compute Cloud (Amazon EC2), ricevo l'errore “Permission denied (publickey)” o “Authentication failed, permission denied”.
Breve descrizione
Gli errori Permission denied (publickey) e Authentication failed, permission denied si verificano per i seguenti motivi:
- Utilizzi il nome utente sbagliato per la tua Amazon Machine Image (AMI) quando ti connetti.
- Hai autorizzazioni dei file errate nel sistema operativo (OS) dell'istanza.
- Il file ** authorized_keys** contiene il file di chiave pubblica SSH (.pub) sbagliato oppure hai avviato l'istanza senza una chiave.
- Il nome del file authorized_keys o della cartella .ssh non è corretto.
- Il file authorized_keys o la cartella .ssh non è più presente.
- (Solo Ubuntu 20.x) Utilizzi AuthorizedKeysCommand nella tua configurazione SSH.
Risoluzione
Verifica di avere il nome utente corretto per la tua AMI
Assicurati di utilizzare un nome utente valido per la tua AMI.
Verifica che le autorizzazioni dei file all'interno del sistema operativo siano corrette e che nel file authorized_keys sia presente la chiave pubblica SSH corretta
Per verificare la configurazione, utilizza uno dei seguenti metodi.
Utilizza 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 si connette all'istanza senza necessità di una connessione di rete. Puoi accedere alla console seriale utilizzando la console Amazon EC2 o l'interfaccia a riga di comando AWS (AWS CLI).
Prima di utilizzare la console seriale, concedi l'accesso a livello di account AWS. Quindi crea policy AWS Identity and Access Management (IAM) che concedano l'accesso alla console per i tuoi utenti IAM. Ogni istanza che utilizza la console seriale deve includere almeno un utente basato su password. Per informazioni sulla configurazione della console seriale EC2 per Linux, consulta Configura l'accesso alla console seriale EC2.
Se la tua istanza non è raggiungibile e non hai configurato l'accesso alla console seriale, utilizza un altro metodo per verificare la configurazione.
Nota: se ricevi messaggi di errore quando esegui i comandi AWS CLI, consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Utilizza Session Manager di Systems Manager
Nota: per utilizzare questo metodo, è necessario installare l'agente SSM. Per un elenco dei prerequisiti per l'utilizzo di Systems Manager, consulta il passaggio 1: Completa i prerequisiti di Session Manager.
Utilizza Session Manager di AWS Systems Manager per accedere all'istanza e apportare correzioni. Completa i seguenti passaggi:
-
Apri la console di Systems Manager.
-
Per verificare se le autorizzazioni dei file nella home directory sono corretti, esegui il comando ls -ld:
ls -ld /home/ec2-user/
Nota: sostituisci a ** ec2-user ** il tuo nome utente in base alla tua istanza Amazon Machine Image (AMI).
Riceverai un output simile a quello dell'esempio seguente:drwx------ 3 ec2-user ec2-user 4096 Apr 1 08:31 /home/ec2-user/
L'esempio seguente mostra un elenco delle autorizzazioni richieste corrette:
Per la home directory di Linux /home, utilizza (0755/drwxr-xr-x).
Per la home directory dell'utente /home/ec2-user/, utilizza (0700/drwx------).
Per l'autorizzazione della directory .ssh /home/ec2-user/.ssh, utilizza (0700/drwx------).
Per l'autorizzazione del file authorized_keys /home/ec2-user/.ssh/authorized_keys, utilizza (0600/-rw-------). -
Sul computer locale, verifica di utilizzare una chiave pubblica SSH.
-
Se la firma della chiave pubblica SSH non è nell'output, aggiorna il file authorized_keys per consentire la tua chiave SSH. Esegui il seguente comando:
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVogCW5eZogRp+vF6Ut360b0bYyTmqgYaCXOyiW77I916AS5jFL3zsCtONbGn4hnG/UGGWXpLfUV85qpVJb38fskPZNuyZtjGjXM2W7qqbCZ1N9HBb6IPBaL97tmqBi+8rD7mSkoHc40sIV+KxkQSvD6AAFjQruCjxzfGIApnOvuj6IMsVEuFHBx4QhkbCzafxo02D9BZT4+dMy7tmyuC+UiNEQpgfFoszl+4VNFTIPlQQyn6CpUiV/rFXIadXsHqc+UOdVnfEXP+30YL75RHabze/1F5MY6t94AEcmcb05Dq4vwN9IjcxKmwgvxLOXzryytepvHQU+PobBEXAMPLE' >> /home/ec2-user/.ssh/authorized_keys
Nota: sostituisci all’esempio di chiave la tua chiave pubblica SSH.
-
Per correggere le autorizzazioni, esegui i seguenti comandi sulla tua istanza EC2:
sudo chown root:root /home sudo chmod 755 /home sudo chown ec2-user:ec2-user /home/ec2-user -R sudo chmod 700 /home/ec2-user /home/ec2-user/.ssh sudo chmod 600 /home/ec2-user/.ssh/authorized_keys
Esegui il runbook di automazione AWSSupport-TroubleshootSSH
Utilizza AWSSupport-TroubleshootSSH per verificare e correggere i problemi che causano errori di connessione remota a una macchina Linux tramite SSH. Per ulteriori informazioni, consulta la sezione Ricevo errori durante il tentativo di connettermi alla mia istanza EC2 tramite SSH. Come posso utilizzare il flusso di lavoro di automazione AWSSupport-TroubleshootSSH per risolvere i problemi di connessione SSH?
Utilizza uno script di dati utente per riparare le autorizzazioni SSH ** ** e aggiungere la chiave pubblica SSH corretta al file authorized_keys
Importante: per utilizzare questo metodo, è necessario arrestare l'istanza. Quando si arresta l'istanza, si verificano i seguenti effetti:
- Se l’istanza è supportata da uno store di istanze Amazon Elastic Block Storage (Amazon EBS) o dispone di volumi di archiviazione di istanze contenenti dati, i dati vengono persi.
- Se l’istanza fa parte di un gruppo Amazon EC2 Auto Scaling, Amazon EC2 Auto Scaling potrebbe terminare l'istanza. Le istanze avviate con Amazon EMR, AWS CloudFormation o AWS Elastic Beanstalk potrebbero far parte di un gruppo Auto Scaling. La chiusura dell'istanza in questo caso dipende dalle impostazioni di protezione con scalabilità dell'istanza per il gruppo Auto Scaling. Se l'istanza fa parte di un gruppo Auto Scaling, rimuovila temporaneamente dal gruppo Auto Scaling prima di completare i seguenti passaggi.
- L'indirizzo IP pubblico dell'istanza cambia. È consigliabile utilizzare un indirizzo IP elastico invece di uno pubblico quando instradi il traffico esterno verso l'istanza.
Per ripristinare le tue autorizzazioni SSH, completa i seguenti passaggi:
-
Apri la console di Amazon EC2.
-
Scegli Istanze nel pannello di navigazione, quindi seleziona l'istanza che desideri avviare.
-
Scegli Azioni, quindi scegli Impostazioni dell’istanza.
-
Scegli ** Modifica dati utente**.
-
Per ** Modifica dati utente**, inserisci il seguente script per i 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: - [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 OS_USER=os-user chown root:root /home chmod 755 /home chown $OS_USER:$OS_USER /home/$OS_USER -R chmod 700 /home/$OS_USER chmod 700 /home/$OS_USER/.ssh chmod 600 /home/$OS_USER/.ssh/authorized_keys --//
Nota: sostituisci a os-user il nome utente associato all'AMI che hai usato per avviare l'istanza.
-
Scegli Salva.
-
Sul computer locale, verifica di utilizzare una chiave pubblica SSH.
-
Se la firma della chiave pubblica SSH non è nell'output, aggiungi la chiave allo script dei dati dell'utente. Se la firma corrisponde, procedi al passaggio successivo.
Esempio di script di dati utente con chiave pubblica SSH:
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 OS_USER=os-user chown root:root /home chmod 755 /home chmod 700 /home/$OS_USER chmod 700 /home/$OS_USER/.ssh chmod 600 /home/$OS_USER/.ssh/authorized_keys echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVogCW5eZogRp+vF6Ut360b0bYyTmqgYaCXOyiW77I916AS5jFL3zsCtONbGn4hnG/UGGWXpLfUV85qpVJb38fskPZNuyZtjGjXM2W7qqbCZ1N9HBb6IPBaL97tmqBi+8rD7mSkoHc40sIV+KxkQSvD6AAFjQruCjxzfGIApnOvuj6IMsVEuFHBx4QhkbCzafxo02D9BZT4+dMy7tmyuC+UiNEQpgfFoszl+4VNFTIPlQQyn6CpUiV/rFXIadXsHqc+UOdVnfEXP+30YL75RHabze/1F5MY6t94AEcmcb05Dq4vwN9IjcxKmwgvxLOXzryytepvHQU+PobBEXAMPLE' >> /home/$OS_USER/.ssh/authorized_keys chown $OS_USER:$OS_USER /home/$OS_USER -R --//
**Nota:**Lo script di dati utente precedente è impostato per essere eseguito a ogni riavvio dell'istanza. Dopo aver riottenuto l'accesso all’istanza, rimuovi lo script di dati utente.
(Solo Ubuntu 20.x) Controlla il comando AuthorizedKeysCommand per la configurazione SSH
In Ubuntu 20.x, EC2 Instance Connect è installato per impostazione predefinita. Quando si configurano le impostazioni AuthorizedKeysCommand e AuthorizedKeysCommandUser per l'autenticazione SSH, l’installazione di EC2 Instance Connect non aggiorna queste impostazioni. Di conseguenza, non puoi utilizzare EC2 Instance Connect. Per risolvere questo problema, rimuovi AuthorizedKeysCommand e AuthorizedKeysCommandUser dalla tua configurazione SSH.
Informazioni correlate
In che modo posso risolvere i problemi di connessione alla mia istanza Linux Amazon EC2 tramite SSH?
Ho perso la mia chiave privata. Come posso connettermi alla mia istanza?
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata un mese fa
- AWS UFFICIALEAggiornata 2 mesi fa
- In che modo posso risolvere i problemi di connessione alla mia istanza Linux Amazon EC2 tramite SSH?AWS UFFICIALEAggiornata 2 anni fa