Visualizzo gli errori "Autorizzazione negata (publickey)" o "Autenticazione non riuscita, autorizzazione negata" quando provo ad accedere alla mia istanza EC2. Come posso risolvere questo problema?

7 minuti di lettura
0

Visualizzo errori "Autorizzazione negata (publickey)" o "Autenticazione non riuscita, autorizzazione negata" quando accedo alla mia istanza Amazon Elastic Compute Cloud (Amazon EC2).

Descrizione breve

Gli errori "Autorizzazione negata (publickey)" e "Autenticazione non riuscita, autorizzazione negata" si verificano quando:

  • Stai tentando di connetterti utilizzando il nome utente sbagliato per la tua AMI.
  • Le autorizzazioni dei file all'interno del sistema operativo non sono corrette sull'istanza.
  • Il file di chiave pubblica SSH (.pub) errato si trova nel file authorized_keys autorizzato.

Risoluzione

Verifica di utilizzare il nome utente corretto per la tua AMI

Per un elenco di nomi utente validi, consulta Errore: il server ha rifiutato la nostra chiave o non sono disponibili metodi di autenticazione supportati.

Verifica che le autorizzazioni dei file all'interno del sistema operativo siano corrette e che la chiave pubblica SSH corretta sia nel file authorized_keys

Esistono quattro metodi per eseguire queste attività:

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 configurazione SSH. La console seriale si connette all'istanza senza richiedere una connessione di rete funzionante. Puoi accedere alla console seriale utilizzando la console Amazon EC2 o l'interfaccia della linea di comando AWS (AWS CLI).

Prima di utilizzare la console seriale, concedi l'accesso a livello di account. Crea delle policy AWS Identity and Access Management (IAM) per concedere 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, 3 o 4. Per informazioni sulla configurazione della Console seriale EC2 per Linux, consulta Configurazione dell'accesso alla Console seriale EC2.

Nota: se visualizzi errori durante l'esecuzione dei comandi AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Metodo 2: Usa Gestione sessione di AWS Systems Manager per accedere all'istanza e apportare correzioni

Questo metodo aggiorna le autorizzazioni e inserisce la chiave pubblica SSH nel file authorized_keys.

Nota: per utilizzare questo metodo è necessaria l'installazione dell'agente SSM. Per ulteriori informazioni su Session Manager e un elenco completo dei prerequisiti, vedere Configurazione di Session Manager.

1.    Apri la console AWS Systems Manager.

2.    Inizia una sessione.

3.    Usa il comando Is-Id per assicurarti che i permessi dei file nella home directory siano corretti. Di seguito è riportato un elenco delle autorizzazioni corrette:

  • La home directory di Linux, /home, ad esempio, dovrebbe essere (0755/drwxr-xr-x).
  • La home directory dell'utente, /home/ec2-user/, ad esempio, dovrebbe essere (0700/drwx------).
  • L'autorizzazione alla directory.ssh, /home/ec2-user/.ssh, ad esempio, dovrebbe essere (0700/drwx------).
  • L'autorizzazione file authorized_keys, ad esempio /home/ec2-user/.ssh/authorized_keys, dovrebbe essere (0600/-rw-------).

Di seguito è riportato un esempio del comando Is-Id e dell'output risultante. In questo esempio, ec2-user è il nome utente. Cambia il nome utente in base alla tua AMI specifica.

$ ls -ld /home/ec2-user/
drwx------ 3 ec2-user ec2-user 4096 Apr  1 08:31 /home/ec2-user/

4.    Sul computer locale, verifica la chiave pubblica SSH.

5.    Se la firma della chiave pubblica SSH non è presente nell'output, aggiorna il file authorized_keys per consentire la tua chiave SSH. Nel seguente esempio, sostituisci la chiave di esempio con la tua chiave pubblica SSH.

$ echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVogCW5eZogRp+vF6Ut360b0bYyTmqgYaCXOyiW77I916AS5jFL3zsCtONbGn4hnG/UGGWXpLfUV85qpVJb38fskPZNuyZtjGjXM2W7qqbCZ1N9HBb6IPBaL97tmqBi+8rD7mSkoHc40sIV+KxkQSvD6AAFjQruCjxzfGIApnOvuj6IMsVEuFHBx4QhkbCzafxo02D9BZT4+dMy7tmyuC+UiNEQpgfFoszl+4VNFTIPlQQyn6CpUiV/rFXIadXsHqc+UOdVnfEXP+30YL75RHabze/1F5MY6t94AEcmcb05Dq4vwN9IjcxKmwgvxLOXzryytepvHQU+PobBEXAMPLE' >> /home/ec2-user/.ssh/authorized_keys

6.    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

7.    Termina la sessione.

8.    Connettiti all'istanza tramite SSH.

Metodo 3: Esegui la procedura AWSSupport-TroubleshootSSH.

AWSSupport-TroubleshootSSH installa lo strumento Amazon EC2Rescue. Dopo l'installazione, lo strumento controlla e corregge i problemi che causano gli errori di connessione remota quando si effettua la connessione a una macchina Linux tramite SSH. Per ulteriori informazioni, consulta Come posso utilizzare il flusso di lavoro dell'automazione AWSSupport-TroubleshootSSH per risolvere i problemi di connessione SSH?

Metodo 4: Usa uno script di dati utente per riparare le autorizzazioni SSH e aggiungere la chiave pubblica SSH corretta al file authorized_keys

Importante

  • Se l'istanza è supportata dall'archivio dell'istanza o ha volumi di archivio dell'istanza che contengono dati, questi vengono persi quando si arresta l'istanza. Per ulteriori informazioni, consulta Definire il tipo di dispositivo root dell'istanza.
  • Se la tua istanza fa parte di un gruppo di dimensionamento automatico Amazon EC2, l'arresto dell'istanza potrebbe terminarla. Le istanze avviate con Amazon EMR, AWS CloudFormation o AWS Elastic Beanstalk potrebbero far parte di un gruppo con dimensionamento automatico AWS. La chiusura dell'istanza in questo scenario dipende dalle impostazioni di protezione del dimensionamento dell'istanza per il gruppo con dimensionamento automatico. Se la tua istanza fa parte di un gruppo con dimensionamento automatico, rimuovila temporaneamente dal gruppo con dimensionamento automatico prima di iniziare i passaggi di risoluzione.
  • L'arresto e l'avvio dell'istanza modifica l'indirizzo IP pubblico dell'istanza. Quando si indirizza il traffico esterno verso l'istanza, è consigliabile utilizzare un indirizzo IP Elastic, anziché un indirizzo IP pubblico.

1.    Apri la console Amazon EC2.

2.    Scegli Istanze dal riquadro di navigazione, quindi seleziona l'istanza che stai tentando di avviare.

3.    Arresta l'istanza.

4.    Scegli Azioni, Impostazioni dell'istanza, Modifica dati utente.

5.    Copia il seguente script di dati utente nella finestra di dialogo Modifica dati utente, quindi seleziona Salva.

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=@@@@@@
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 il valore di OS_USER con il nome utente associato all'AMI da cui hai avviato l'istanza. Per ulteriori informazioni, consulta Ottenere il nome utente predefinito per l'AMI utilizzata per avviare l'istanza in Cause comuni di problemi di connessione.

6.    Sul computer locale, verifica la chiave pubblica SSH.

7.    Se la firma della chiave pubblica SSH non è presente nell'output, aggiungi la chiave corretta allo script di dati utente che hai creato nel passaggio 5. Se la firma corrisponde, puoi saltare questo passaggio. Aggiungi la chiave pubblica SSH allo script di dati utente come mostrato nell'esempio seguente. Sostituisci la chiave di esempio con la tua 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=@@@@@@
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: sostituisci il valore di OS_USER con il nome utente associato all'AMI da cui hai avviato l'istanza. Per ulteriori informazioni, consulta Ottenere il nome utente predefinito per l'AMI utilizzata per avviare l'istanza in Cause comuni di problemi di connessione.

8.    Avvia la tua istanza.

Nota: lo script di dati utente precedente è impostato per essere eseguito a ogni riavvio dell'istanza. Dopo aver riottenuto l'accesso alla tua istanza, rimuovi lo script di dati utente.

Per rimuovere i dati utente:

  • Completa i passaggi 1—4 di questa sezione.
  • Elimina lo script di dati utente nella finestra di dialogo Modifica dati utente.

Informazioni correlate

Come posso risolvere i problemi di connessione alla mia istanza Amazon Linux EC2 tramite SSH?

Ho perso la mia chiave privata. Come posso connettermi alla mia istanza Linux?

Come posso connettermi alla mia istanza Amazon EC2 se ho perso la mia coppia di chiavi SSH dopo l'avvio iniziale?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa