Salta al contenuto

Perché ricevo il messaggio di errore Server refused our key" quando provo a connettermi alla mia istanza EC2 tramite SSH?

6 minuti di lettura
0

Quando mi connetto alla mia istanza Amazon Elastic Compute Cloud (Amazon EC2) tramite SSH, ricevo l'errore "Server refused our key".

Risoluzione

Il server SSH (sshd) potrebbe rifiutare una chiave SSH privata per uno dei seguenti motivi:

Potresti anche ricevere il messaggio di errore Server refused our key se l'istanza ha problemi di autorizzazione o manca una directory. Per verificare le autorizzazioni e le directory dell'istanza, 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.

Utilizza Systems Manager per accedere all'istanza e verificare le autorizzazioni

Prerequisito: installa l'Agente AWS Systems Manager (Agente SSM). Inoltre, assicurati che la configurazione rispetti i prerequisiti per Gestione sessione, una funzionalità di AWS Systems Manager.

Per risolvere i problemi dell'istanza utilizzando Gestione sessione, completa i seguenti passaggi:

  1. Apri la console Systems Manager.

  2. Avvia una sessione.

  3. Per assicurarti che i file nella home directory dispongano delle autorizzazioni corrette, esegui questo comando:

    stat /home/ec2-user/  
    ls -ld /home               # Should show drwxr-xr-x (755)
    ls -ld /home/ec2-user      # Should show drwx------ (700)
    ls -ld /home/ec2-user/.ssh # Should show drwx------ (700)
    ls -l /home/ec2-user/.ssh/authorized_keys # Should show -rw------- (600)     

    Nota: sostituisci ec2-user con il nome utente corretto per la tua AMI.
    Nell'output, controlla Access per assicurarti che la configurazione utilizzi le seguenti autorizzazioni:
    La home directory /home di Linux deve avere le autorizzazioni 0755/drwxr-xr-x.
    La home directory dell'utente /home/ec2-user/ deve avere le autorizzazioni 0700/drwx------.
    La directory .ssh /home/ec2-user/.ssh deve avere le autorizzazioni 0700/drwx------.
    Il file authorized_keys /home/ec2-user/.ssh/authorized_keys deve avere le autorizzazioni 0600/-rw-------.
    Esempio di output:

    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. Per aggiornare le autorizzazioni della configurazione, esegui questi 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

    Nota: sostituisci ec2-user con il nome utente corretto per la tua AMI.

  5. Termina la sessione.

  6. Utilizza SSH per connetterti all'istanza.

Esegui il runbook AWSSupport-TroubleshootSSH

Per correggere automaticamente i problemi che causano errori, esegui AWSSupport-TroubleshootSSH. Il runbook installa lo strumento Amazon EC2Rescue sull'istanza, quindi identifica e corregge i problemi che causano errori di connessione remota durante SSH. Per ulteriori informazioni, consulta Ottengo 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 i dati utente per correggere le autorizzazioni dell'istanza

Importante: prima di arrestare e avviare l'istanza, intraprendi le seguenti azioni:

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. Se utilizzi Amazon Route 53, potresti dover aggiornare i record DNS di Route 53 quando l'IP pubblico cambia.

Per risolvere i problemi relativi alle autorizzazioni utilizzando i dati utente, completa i seguenti passaggi:

  1. Apri la console Amazon EC2.

  2. Seleziona Istanze dal pannello di navigazione, quindi seleziona l'istanza.

  3. Scegli Stato dell’istanza, quindi scegli Arresta istanza.
    Nota: se non puoi selezionare Arresta istanza, ciò significa che l'istanza è già stata arrestata o che il suo dispositivo principale è un volume di archivio dell'istanza.

  4. Scegli Operazioni, quindi scegli Impostazioni dell'istanza.

  5. Scegli Modifica dati utente, quindi inserisci il seguente comando:

    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
    --//

    Nota: sostituisci ec2-user con il nome utente corretto per la tua AMI. Non aggiungere altri spazi quando inserisci il comando precedente.

  6. Scegli Salva.

  7. Avvia l'istanza, quindi utilizza SSH per connetterti all'istanza.

Per impostazione predefinita, il comando con dati utente viene eseguito una volta per istanza. I passaggi precedenti modificano il comportamento predefinito per aggiungere la chiave pubblica a ogni riavvio, arresto o avvio dell'istanza. Per ripristinare il comportamento predefinito, rimuovi i comandi con dati utente personalizzati. È consigliabile consentire l'esecuzione dei dati utente dopo il primo avvio dell'istanza. Puoi utilizzare l'API ModifyInstanceAttribute per modificare i dati utente di un'istanza. Per limitare l'accesso all'API ModifyInstanceAttribute, utilizza policy AWS Identity and Access Management (AWS IAM).

Informazioni correlate

Connect to your Linux instance using PuTTY

Amazon EC2 key pairs and Amazon EC2 instances

In che modo posso risolvere i problemi di connessione alla mia istanza Linux Amazon EC2 tramite SSH?

Perché ricevo l'errore "Server refused our key" quando provo a connettermi alla mia istanza EC2 tramite SSH?