Perché ricevo l'errore "Il server ha rifiutato la nostra chiave" quando provo a connettermi alla mia istanza EC2 tramite SSH?

8 minuti di lettura
0

Ricevo l'errore "Il server ha rifiutato la nostra chiave" quando mi connetto alla mia istanza Amazon Elastic Compute Cloud (Amazon EC2) tramite SSH.

Breve descrizione

Esistono diversi motivi per cui un server SSH (sshd) rifiuta una chiave SSH privata. Di seguito sono riportati alcuni dei motivi più comuni per cui potresti ricevere questo errore:

Risoluzione

Stai utilizzando il nome utente errato per la tua AMI quando ti connetti alla tua istanza EC2

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

L'utente che ha cercato di accedere all'istanza è stato eliminato dal server o l'account è stato bloccato

Se l'utente che sta tentando di accedere all'istanza è stato eliminato dal server, aggiungilo nuovamente come nuovo utente. Per ulteriori informazioni, consulta la sezione Come posso aggiungere nuovi account utente con accesso SSH alla mia istanza Amazon EC2 Linux?

Vi sono problemi con le autorizzazioni sull'istanza o manca una directory

Esistono quattro metodi per verificare le autorizzazioni e le directory sull'istanza:

Metodo 1: usa la console seriale EC2

Se hai attivato la Console seriale EC2 per Linux, puoi utilizzare la console seriale per risolvere i problemi relativi ai tipi supportati di istanze basate su Nitro. La console seriale consente di risolvere i problemi di avvio, di configurazione di rete e di configurazione SSH. La console seriale si connette all'istanza senza richiedere una connessione di rete attiva. 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, è necessario concedere l'accesso a livello di account. Quindi, devi creare policy di AWS Identity and Access Management (IAM) che concedano l'accesso ai tuoi utenti IAM. Inoltre, ogni istanza che utilizza la console seriale deve includere almeno un utente basato su password. Se la tua istanza non è raggiungibile e non hai configurato l'accesso alla console seriale, segui le istruzioni indicate nel Metodo 2, 3 o 4. Per informazioni sulla configurazione della console seriale EC2 per Linux, consulta Configurazione dell'accesso alla Console seriale EC2.

**Metodo 2:****usa Gestione sessione di AWS Systems Manager per accedere all'istanza e verificare le autorizzazioni **

**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.    Avvia una sessione.

3.    Usa il comando stat per assicurarti che le autorizzazione dei file nella directory home siano corretti. Di seguito è riportato un elenco delle autorizzazioni corrette:

  • La directory home di Linux, /home, ad esempio, dovrebbe essere (0755/drwxr-xr-x).
  • La directory home 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 del file authorized_keys, ad esempio /home/ec2-user/.ssh/authorized_keys, dovrebbe essere (0600/-rw-------).

Di seguito è riportato un esempio del comando stat e dell'output risultante. In questo esempio, ec2-user è il nome utente. Cambia il nome utente in base al tuo AMI specifico:

$ stat /home/ec2-user/
  File: '/home/ec2-user/'
  Size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: 10301h/66305d	Inode: 18322       Links: 3
Access: (0700/drwx------)  Uid: (  500/ec2-user)   Gid: (  500/ec2-user)

4.    Se le autorizzazioni non corrispondono ai valori precedenti, esegui i seguenti comandi:

$ 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

5.    Termina la sessione.

6.    Esegui una connessione tramite SSH alla tua istanza.

Metodo 3: correggi automaticamente i problemi che causano l'errore eseguendo il documento AWSSupport-TroubleshootSSH

Il documento di automazione AWSSupport-TroubleshootSSH installa lo strumento Amazon EC2Rescue sull'istanza, quindi verifica e corregge alcuni problemi che causano errori di connessione remota durante la connessione 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?

Metodo 4: usa i dati utente per correggere le autorizzazioni sull'istanza

Importante:

  • questa procedura di ripristino richiede l'arresto e il riavvio dell'istanza. Quando si esegue questa operazione, i dati sui volumi di archiviazione delle istanze vengono persi. Per ulteriori informazioni, consulta la sezione Determinare il tipo di dispositivo root dell'istanza.
  • Se l'istanza fa parte di un gruppo con dimensionamento automatico Amazon EC2, l'istanza potrebbe terminare quando viene arrestata. Ciò potrebbe verificarsi anche su istanze lanciate da servizi che utilizzano Dimensionamento automatico AWS, come Amazon EMR, AWS CloudFormation, AWS Elastic Beanstalk e così via. La chiusura dell'istanza in questo scenario dipende dalle impostazioni di protezione scalabile 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 il riavvio dell'istanza modificano l'indirizzo IP pubblico dell'istanza. È consigliabile utilizzare un indirizzo IP elastico anziché un indirizzo IP pubblico quando si indirizza il traffico esterno verso l'istanza.
  • Non è possibile modificare la chiave SSH utilizzando i dati utente se il dispositivo principale dell'istanza è un volume archivio dell'istanza. Per ulteriori informazioni, consulta la sezione Determinare il tipo di dispositivo root dell'istanza.
  • L'aggiornamento dei dati utente dell'istanza si applica a tutte le distribuzioni che supportano le direttive cloud-init. Cloud-init deve essere installato e configurato affinché queste istruzioni abbiano esito positivo. Per ulteriori informazioni sul modulo SSH cloud-init, consulta la sezione SSH - Configurazione SSH e chiavi SSH nella documentazione di Cloud-init.

1.    Apri la console Amazon EC2, quindi seleziona la tua istanza.

2.    Scegli Stato dell’istanza, quindi scegli Arresta istanza.

**Nota:**se Arresta non è disponibile, l'istanza è già stata arrestata o il suo dispositivo principale è un volume archivio dell'istanza.

3.    Scegli Azioni, quindi Impostazioni istanza, infine scegli Modifica dati utente.

4.    Copia il seguente script nel campo Dati utente, quindi seleziona Salva. Assicurati di copiare l'intero script e di non aggiungere spazi aggiuntivi.

**Nota:**lo script seguente utilizza il nome utente ec2-user. Cambia ec2-user con il nome utente della tua AMI.

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
chown root:root /home
chmod 755 /home
chown ec2-user:ec2-user /home/ec2-user -R
chmod 700 /home/ec2-user /home/ec2-user/.ssh
chmod 600 /home/ec2-user/.ssh/authorized_keys
--//

5.    Avvia l'istanza, quindi connettiti tramite SSH all'istanza.

**Nota:**per impostazione predefinita, lo script dei dati utente viene eseguito una volta per istanza. Questa procedura modifica il comportamento predefinito per aggiungere la chiave pubblica a ogni riavvio, arresto o avvio dell'istanza. Per ripristinare il comportamento predefinito, rimuovi i dati utente personalizzati. Come best practice, considera le implicazioni sulla sicurezza derivanti dall'esecuzione dei dati utente dopo il primo avvio di un'istanza. Puoi modificare i dati utente di un'istanza con il metodo API ModifyInstanceAttribute. Per limitare l'accesso a questo metodo, utilizza le policy IAM.

Informazioni correlate

Connettiti alla tua istanza Linux da Windows usando PuTTY

Coppie di chiavi Amazon EC2 e istanze Windows

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

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa