Solucionar problemas de conexão com a instância do Linux do Amazon EC2 - Amazon Elastic Compute Cloud

Solucionar problemas de conexão com a instância do Linux do Amazon EC2

As informações e os erros comuns a seguir podem ajudar você a solucionar problemas de conexão com a instância Linux.

Causas comuns de problemas de conexão

Recomendamos que você comece a solucionar problemas de conexão de instâncias verificando se realizou com precisão as tarefas a seguir.

Verificar o nome de usuário da instância

É possível se conectar à instância usando o nome de usuário da conta de usuário ou o nome de usuário padrão da AMI que você usou para iniciar a instância.

  • Obtenha o nome de usuário da sua conta de usuário.

    Para obter mais informações sobre como criar uma conta de usuário, consulte Gerenciar usuários do sistema na instância do Linux do Amazon EC2.

  • Obtenha o nome de usuário padrão da AMI que você usou para iniciar a instância.

    A AMI usada para iniciar a instância Nome de usuário padrão

    Amazon Linux

    ec2-user
    CentOS centos ou ec2-user
    Debian admin
    Fedora fedora ou ec2-user
    RHEL ec2-user ou root
    SUSE ec2-user ou root
    Ubuntu ubuntu
    Oracle ec2-user
    Bitnami bitnami
    Rocky Linux rocky
    Outros Verificar com o provedor de AMI
Verificar se as regras do grupo de segurança permitem tráfego

Verifique se o grupo de segurança associado à instância permite tráfego SSH de entrada do endereço IP. O grupo de segurança padrão para a VPC não permite o tráfego SSH de entrada por padrão. O grupo de segurança criado pelo assistente de execução de instância permite o tráfego SSH de entrada por padrão. Para ver as etapas para adicionar uma regra para o tráfego SSH de entrada à sua instância do Linux, consulte Regras para se conectar a instâncias pelo computador. Para obter as etapas de verificação, consulte Erro ao se conectar à sua instância: limite de tempo da conexão atingido.

Verificar se a instância está pronta

Depois que você inicia uma instância, pode demorar alguns minutos para que ela fique pronta para aceitar solicitações de conexão. Verifique a instância para se certificar de que ela está sendo executada e passou em suas verificações de status.

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Instâncias e, em seguida, sua instância.

  3. Verifique o seguinte:

    1. Na coluna Instance state (Estado da instância), verifique se sua instância está no estado running.

    2. Na coluna Status check (Verificação de status), verifique se sua instância passou nas duas verificações de status.

Verifique se você atendeu a todos os pré-requisitos para se conectar

Certifique-se de ter todas as informações necessárias para se conectar. Para ter mais informações, consulte Conectar-se à instância do Linux usando SSH.

Conectar-se do Linux ou do macOS

Se o sistema operacional do computador local for Linux ou macOS X, verifique os seguintes pré-requisitos específicos para conexão com uma instância do Linux:

Conectar do Windows

Se o sistema operacional do computador local for Windows, verifique os seguintes pré-requisitos específicos para conexão com uma instância do Linux:

Erro ao se conectar à sua instância: limite de tempo da conexão atingido

Se você tentar se conectar à sua instância e receber uma mensagem de erro Network error: Connection timed out ou Error connecting to [instance], reason: -> Connection timed out: connect, experimente o seguinte:

Verifique as regras do seu security group.

Você precisa de uma regra de grupo de segurança que permita tráfego de entrada proveniente do endereço IPv4 público do seu computador local na porta adequada.

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Instâncias e, em seguida, sua instância.

  3. Na guia Security (Segurança) na parte inferior da página do console, em Inbound rules (Regras de entrada), verifique a lista de regras que estão em vigor para a instância selecionada. Verifique se existe uma regra que permita tráfego do computador local para a porta 22 (SSH).

    Se seu grupo de segurança não tiver uma regra que permita tráfego de entrada proveniente do seu computador local, adicione uma regra para seu grupo de segurança. Para ter mais informações, consulte Regras para se conectar a instâncias pelo computador.

  4. Para a regra que permite tráfego de entrada, verifique o campo Source (Origem). Se o valor for um só endereço IP e se o endereço IP não for estático, um novo endereço IP será atribuído sempre que você reiniciar o computador. Isso fará com que a regra não inclua o tráfego de endereço IP do seu computador. Talvez o endereço IP não seja estático se seu computador estiver em uma rede corporativa, se você estiver se conectando por um provedor de serviços de Internet (ISP), ou se seu endereço IP do computador for dinâmico e mudar sempre que você reiniciar o computador. Para garantir que a regra do grupo de segurança permita o tráfego de entrada do computador local, em vez de especificar um único endereço IP para Source (Origem), em vez disso, especifique o intervalo de endereços IP usado por seus computadores cliente.

    Para obter mais informações sobre regras de grupos de segurança, consulte Regras de grupos de segurança no Guia do usuário da Amazon VPC.

Verifique a tabela de rotas para a sub-rede.

Você precisa de uma rota que envie todo o tráfego que sai da VPC para o gateway da Internet da VPC.

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Instâncias e, em seguida, sua instância.

  3. Na guia Networking (Redes), anote os valores para VPC ID (ID da VPC) e Subnet ID (ID de sub-rede).

  4. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.

  5. No painel de navegação, escolha Gateways da Internet. Verifique se há um gateway de internet associado à sua VPC. Caso contrário, escolha Create internet gateway (Criar gateway da Internet), insira um nome para o gateway da Internet e escolha Create internet gateway (Criar gateway da Internet). Em seguida, para o gateway da internet criado, escolha Actions (Ações), Attach to VPC (Anexar à VPC), selecione sua VPC e, em seguida, escolha Attach internet gateway (Anexar gateway da internet)para anexá-lo à sua VPC.

  6. No painel de navegação, selecione Sub-redes e selecione sua sub-rede.

  7. Na guia Route tabl (Tabela de rotas), verifique se há uma rota com 0.0.0.0/0 como destino e o gateway da Internet para sua VPC como alvo. Se você estiver se conectando à sua instância usando o endereço IPv6, verifique se há uma rota para todo o tráfego IPv6 (::/0) que aponta para o gateway de Internet. Caso contrário, faça o seguinte:

    1. Escolha o ID da tabela de rotas (rtb-xxxxxxxx) para navegar para a tabela de rotas.

    2. Na guia Routes (Rotas), escolha Edit routes (Editar rotas). Escolha Add route (Adicionar rota), use 0.0.0.0/0 como o destino, e o gateway da Internet como o destino. Para IPv6, escolha Add route (Adicionar rota), use ::/0 como o destino, e o gateway da Internet como o destino.

    3. Escolha Save routes (Salvar rotas).

Verifique a lista de controle de acesso (ACL) da rede para a sub-rede.

As ACLs da rede devem permitir tráfego SSH de entrada do seu endereço IP local na porta 22. Também deve permitir tráfego de saída para as portas efêmeras (1024-65535).

  1. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.

  2. No painel de navegação, escolha Sub-redes.

  3. Selecione a sub-rede.

  4. Na guia Network ACL (ACL da rede), em Inbound rules,(Regras de entrada), verifique se as regras permitem tráfego de entrada na porta obrigatória de seu computador. Caso contrário, exclua ou modifique a regra que está bloqueando tráfego.

  5. Em Outbound rules (Regras de saída), verifique se as regras permitem tráfego nas portas efêmeras para seu computador. Caso contrário, exclua ou modifique a regra que está bloqueando tráfego.

Caso seu computador esteja em uma rede corporativa

Pergunte ao administrador da rede se o firewall interno permite tráfego de entrada e saída do seu computador na porta 22.

Se você tiver um firewall no computador, verifique se ele permite tráfego de entrada e saída do computador na porta 22.

Verifique se sua instância tem um endereço IPv4 público.

Se não tiver, associe um endereço IP elástico à sua instância. Para ter mais informações, consulte Endereços IP elásticos.

Verifique a carga de CPU na sua instância; o servidor pode estar sobrecarregado.

A AWS fornece automaticamente dados, como status de métricas e instâncias de Amazon CloudWatch, que é possível usar para ver quanta carga de CPU está na sua instância e, caso necessário, ajusta como suas cargas são manuseadas. Para ter mais informações, consulte Monitorar instâncias usando o CloudWatch.

Para conectar-se à sua instância usando um endereço IPv6, verifique o seguinte:

  • Sua sub-rede deve estar associada a uma tabela de rotas que tenha uma rota para tráfego IPv6 (::/0) para um gateway de Internet.

  • As regras do grupo de segurança devem permitir tráfego de entrada do endereço IPv6 local na porta 22.

  • As regras de Network ACL devem permitir tráfego de IPv6 de entrada e saída.

  • Se você executou a instância de uma AMI mais antiga, ela pode não estar configurada para DHCPv6 (endereços IPv6 não são automaticamente reconhecidos na interface de rede). Para obter mais informações, consulte Configurar o IPv6 em suas instâncias no Guia do usuário da Amazon VPC.

  • Seu computador local deve ter um endereço IPv6 e ser configurado para usar IPv6.

Erro: não foi possível carregar a chave ... Esperando: QUALQUER CHAVE PRIVADA

Se você tentar se conectar à sua instância e obter a mensagem de erro unable to load key ... Expecting: ANY PRIVATE KEY, o arquivo no qual a chave privada está armazenada foi configurado incorretamente. Se o arquivo da chave privada terminar em .pem, ele ainda poderá estar configurado incorretamente. Uma possível causa para um arquivo da chave privada configurado incorretamente é a ausência de um certificado.

Se o arquivo da chave privada estiver configurado incorretamente, siga estas etapas para solucionar o erro:
  1. Crie um novo par de chaves. Para ter mais informações, consulte Criar um par de chaves usando o Amazon EC2.

    nota

    Como alternativa, é possível criar um novo par de chaves usando uma ferramenta de terceiros. Para ter mais informações, consulte Criar um par de chaves usando uma ferramenta de terceiros e importe a chave pública para o Amazon EC2.

  2. Adicione o novo par de chaves à sua instância. Para ter mais informações, consulte Perdi minha chave privada. Como posso me conectar à instância?.

  3. Conecte-se à instância usando o novo par de chaves.

Erro: Chave do usuário não reconhecida pelo servidor

Se você usar o SSH para conectar à sua instância
  • Use ssh -vvv para obter o triplo de informações de depuração detalhadas (verbose) ao se conectar:

    ssh -vvv -i path/key-pair-name.pem instance-user-name@ec2-203-0-113-25.compute-1.amazonaws.com

    O exemplo de saída a seguir demonstra o que é possível ver se estivesse tentando se conectar à sua instância com uma chave não reconhecida pelo servidor:

    open/ANT/myusername/.ssh/known_hosts). debug2: bits set: 504/1024 debug1: ssh_rsa_verify: signature correct debug2: kex_derive_keys debug2: set_newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug2: key: boguspem.pem ((nil)) debug1: Authentications that can continue: publickey debug3: start over, passed a different list publickey debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password debug3: authmethod_lookup publickey debug3: remaining preferred: keyboard-interactive,password debug3: authmethod_is_enabled publickey debug1: Next authentication method: publickey debug1: Trying private key: boguspem.pem debug1: read PEM private key done: type RSA debug3: sign_and_send_pubkey: RSA 9c:4c:bc:0c:d0:5c:c7:92:6c:8e:9b:16:e4:43:d8:b2 debug2: we sent a publickey packet, wait for reply debug1: Authentications that can continue: publickey debug2: we did not send a packet, disable method debug1: No more authentication methods to try. Permission denied (publickey).
Se você usar o PuTTY para se conectar à instância
  • Verifique se o arquivo de chave privada (.pem) foi convertido para o formato reconhecido pelo PuTTY (.ppk). Para obter mais informações sobre a conversão da sua chave privada, consulte Conectar-se à instância do Linux usando PuTTY.

    nota

    No PuTTYgen, carregue o arquivo de chave privada e selecione Salvar chave privada em vez de Gerar.

  • Verifique se você está se conectando com o nome de usuário apropriado para sua AMI. Insira o nome de usuário na caixa Nome do host na janela Configuração do PuTTY.

    A AMI usada para iniciar a instância Nome de usuário padrão

    Amazon Linux

    ec2-user
    CentOS centos ou ec2-user
    Debian admin
    Fedora fedora ou ec2-user
    RHEL ec2-user ou root
    SUSE ec2-user ou root
    Ubuntu ubuntu
    Oracle ec2-user
    Bitnami bitnami
    Rocky Linux rocky
    Outros Verificar com o provedor de AMI
  • Verifique se você tem uma regra do security group de entrada para permitir tráfego de entrada para a porta apropriada. Para ter mais informações, consulte Regras para se conectar a instâncias pelo computador.

Erro: permissão negada ou conexão fechada pela porta 22 de [instância]

Se você se conectar à instância usando SSH e obtiver algum dos erros a seguir, Host key not found in [directory], Permission denied (publickey), Authentication failed, permission denied ou Connection closed by [instance] port 22, verifique se está se conectando com o nome de usuário apropriado para a AMI e se especificou a chave privada correta (arquivo .pem) para a instância).

Os nomes de usuários apropriados são os seguintes:

A AMI usada para iniciar a instância Nome de usuário padrão

Amazon Linux

ec2-user
CentOS centos ou ec2-user
Debian admin
Fedora fedora ou ec2-user
RHEL ec2-user ou root
SUSE ec2-user ou root
Ubuntu ubuntu
Oracle ec2-user
Bitnami bitnami
Rocky Linux rocky
Outros Verificar com o provedor de AMI

Por exemplo, para usar um cliente SSH para se conectar a uma instância do Amazon Linux, use o seguinte comando:

ssh -i /path/key-pair-name.pem instance-user-name@ec2-203-0-113-25.compute-1.amazonaws.com

Confirme se você está usando um arquivo de chave privada que corresponde ao par de chaves que selecionou ao executar a instância.

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Instances (Instâncias) e, em seguida, selecione sua instância.

  3. Na guia Details (Detalhes), em Instance details (Detalhes da instância), verifique o valor do Nome do par de chaves.

  4. Se você não tiver especificado um par de chaves ao executar a instância, pode encerrar a instância e executar uma nova, especificando um par de chaves. Se essa for uma instância que você está usando mas não tiver mais o arquivo .pem para seu par de chaves, pode substituir o par de chaves por um novo. Para ter mais informações, consulte Perdi minha chave privada. Como posso me conectar à instância?.

Se você tiver gerado seu próprio par de chaves, garanta que o gerador de chaves está configurado para criar chaves RSA. Chaves DSA não são aceitas.

Se você obtiver um erro Permission denied (publickey) e nenhum dos casos acima se aplicar (por exemplo, você conseguiu se conectar previamente), as permissões no diretório inicial da sua instância podem ter sido alteradas. As permissões para /home/instance-user-name/.ssh/authorized_keys devem ser limitadas somente ao proprietário.

Para verificar as permissões na sua instância
  1. Pare sua instância e separe o volume do dispositivo raiz. Para ter mais informações, consulte Início e interrupção de instâncias do Amazon EC2.

  2. Execute uma instância temporária na mesma zona de disponibilidade que sua instância atual (use uma AMI semelhante ou a mesma AMI usada para sua instância atual) e associe o volume do dispositivo raiz à instância temporária.

  3. Conecte-se à instância temporária, crie um ponto de montagem e monte o volume associado.

  4. Na instância temporária, verifique as permissões do diretório /home/instance-user-name/ do volume associado. Se necessário, ajuste as permissões da seguinte forma:

    [ec2-user ~]$ chmod 600 mount_point/home/instance-user-name/.ssh/authorized_keys
    [ec2-user ~]$ chmod 700 mount_point/home/instance-user-name/.ssh
    [ec2-user ~]$ chmod 700 mount_point/home/instance-user-name
  5. Desmonte o volume, separe-o da instância temporária e reassocie-o à instância original. Especifique o nome correto do dispositivo para o volume do dispositivo raiz; por exemplo, /dev/xvda.

  6. Execute sua instância. Se você não precisar mais da instância temporária, pode encerrá-la.

Erro: arquivo de chave privada desprotegido

Seu arquivo de chave privada deve estar protegido contra operações de leitura e gravação por parte de qualquer outro usuário. Se sua chave privada puder ser lida ou gravada por qualquer pessoa menos você, o SSH ignorará sua chave e você verá a mensagem de advertência abaixo.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0777 for '.ssh/my_private_key.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: .ssh/my_private_key.pem Permission denied (publickey).

Se você vir uma mensagem semelhante ao tentar fazer login na sua instância, examine a primeira linha da mensagem de erro para verificar se está usando a chave pública correta para sua instância. O exemplo acima usa a chave privada .ssh/my_private_key.pem com permissões de arquivo 0777, que permitem que qualquer pessoa leia ou grave nesse arquivo. O nível de permissão é muito inseguro, por isso o SSH ignora essa chave.

Se você está se conectando do macOS ou Linux, execute o comando a seguir para corrigir esse erro, substituindo o caminho para o arquivo de chave privada.

[ec2-user ~]$ chmod 0400 .ssh/my_private_key.pem

Se você estiver se conectando a uma instância do Linux no Windows, execute as etapas a seguir no computador local.

  1. Navegue até o arquivo .pem.

  2. Clique com o botão direito do mouse no arquivo .pem e selecione Properties (Propriedades).

  3. Escolha a guia Segurança.

  4. Selecione Advanced (Avançado).

  5. Verifique se você é o proprietário do arquivo. Caso contrário, altere o proprietário para seu nome de usuário.

  6. Selecione Disable inheritance (Desabilitar herança) e Remove all inherited permissions from this object (Remover todas as permissões herdadas deste objeto).

  7. Selecione Add (Adicionar), Select a principal (Selecionar um principal), insira seu nome de usuário e selecione OK.

  8. Na janela Permission Entry (Entrada de permissão), conceda as permissões Read (Leitura) e selecione OK.

  9. Clique em Apply (Aplicar) para garantir que todas as configurações sejam salvas.

  10. Selecione OK para fechar a janela Advanced Security Settings (Configurações avançadas de segurança).

  11. Selecione OK para fechar a janela Properties (Propriedades).

  12. Você deve ser capaz de se conectar à instância do Linux no Windows usando SSH.

No prompt de comando do Windows, execute os comandos a seguir.

  1. No prompt de comando, navegue até o local do caminho do arquivo .pem.

  2. Execute o seguinte comando para redefinir e remover permissões explícitas:

    icacls.exe $path /reset
  3. Execute o seguinte comando para conceder permissões de leitura ao usuário atual:

    icacls.exe $path /GRANT:R "$($env:USERNAME):(R)"
  4. Execute o seguinte comando para desabilitar a herança e remover permissões herdadas.

    icacls.exe $path /inheritance:r
  5. Você deve ser capaz de se conectar à instância do Linux no Windows usando SSH.

Erro: a chave privada deve começar com "-----BEGIN RSA PRIVATE KEY-----" e terminar com "-----END RSA PRIVATE KEY-----"

Se usar uma ferramenta de terceiros, como ssh-keygen, para criar um par de chaves RSA, ela gerará a chave privada no formato de chave OpenSSH. Quando você se conecta à sua instância, se você usar a chave privada no formato OpenSSH para descriptografar a senha, você receberá o erro Private key must begin with "-----BEGIN RSA PRIVATE KEY-----" and end with "-----END RSA PRIVATE KEY-----".

Para resolver o erro, a chave privada deve estar no formato PEM. Use o comando a seguir para criar a chave privada no formato PEM:

ssh-keygen -m PEM

Erro: o servidor recusou nossa chave ou não há métodos de autenticação compatíveis

Se você usar o PuTTY para se conectar à instância e obtiver algum dos erros a seguir, Error: Server refused our key ou Error: No supported authentication methods available, verifique se está se conectando com o nome de usuário apropriado para a AMI. Digite o nome de usuário em Nome do usuário na janela Configuração do PuTTY.

Os nomes de usuários apropriados são os seguintes:

A AMI usada para iniciar a instância Nome de usuário padrão

Amazon Linux

ec2-user
CentOS centos ou ec2-user
Debian admin
Fedora fedora ou ec2-user
RHEL ec2-user ou root
SUSE ec2-user ou root
Ubuntu ubuntu
Oracle ec2-user
Bitnami bitnami
Rocky Linux rocky
Outros Verificar com o provedor de AMI

Você também deve verificar:

  • Se está usando a versão mais recente do PuTTY. Para obter mais informações, consulte a página do PuTTY.

  • Se o arquivo de chave privada (.pem) foi convertido corretamente para o formato reconhecido pelo PuTTY (.ppk). Para obter mais informações sobre a conversão da sua chave privada, consulte Conectar-se à instância do Linux usando PuTTY.

Não é possível fazer o ping da instância

O comando ping é um tipo de tráfego de ICMP — se você não conseguir fazer o ping da sua instância, verifique se as regras do grupo de segurança de entrada permitem tráfego de ICMP para a mensagem Echo Request de todas as origens, ou do computador ou da instância em que você está emitindo o comando.

Caso você não consiga emitir um comando ping por sua instância, assegure-se de que suas regras do security group de saída permitam tráfego de ICMP para a mensagem Echo Request a todos os destinos ou para o host no qual você está tentando fazer o ping.

Os comandos Ping também podem ser bloqueados por um firewall ou tempo de espera devido a problemas de latência de rede ou hardware. É necessário consultar o administrador de sistema ou de rede local para obter ajuda com mais solução de problemas.

Erro: Server unexpectedly closed network connection (A conexão de rede foi fechada inesperadamente pelo servidor)

Se você estiver se conectando à instância com o PuTTY e receber o erro "A conexão de rede foi fechada inesperadamente pelo servidor", verifique se os keepalives estão habilitados na página Conexão da Configuração do PuTTY para evitar ser desconectado. Alguns servidores desconectam clientes quando eles não recebem nenhum dado em determinado período. Defina os segundos entre os keepalives para 59 segundos.

Se você ainda tiver problemas após habilitar os keepalives, tente desabilitar o algoritmo de Nagle na página Conexão da Configuração do PuTTY.

Erro: falha na validação da chave do host para EC2 Instance Connect

Se você alternar as chaves do host da instância, as novas chaves do host não serão automaticamente carregadas para o banco de dados de chaves de host confiáveis da AWS. Isso faz com que a validação da chave do host apresente falha quando você tenta se conectar à instância usando o cliente EC2 Instance Connect baseado em navegador e você não consegue se conectar à instância.

Para resolver o erro, é necessário executar o script eic_harvest_hostkeys na instância, o que carregará sua nova chave de host para EC2 Instance Connect. O script está localizado em /opt/aws/bin/ nas instâncias do Amazon Linux 2 e em /usr/share/ec2-instance-connect/ nas instâncias do Ubuntu.

Amazon Linux 2
Para resolver o erro de falha de validação da chave de host em uma instância do Amazon Linux 2.
  1. Conecte-se à sua instância usando SSH.

    Você pode se conectar usando a CLI do EC2 Instance Connect ou o par de chaves de SSH atribuído à instância quando você a executou e o nome do usuário padrão da AMI usada para executar a instância. Para o Amazon Linux 2, o nome do usuário padrão é ec2-user.

    Por exemplo, se a instância tiver sido executada usando o Amazon Linux 2, o nome DNS público da instância for ec2-a-b-c-d.us-west-2.compute.amazonaws.com e o par de chaves for my_ec2_private_key.pem, use o seguinte comando para o SSH na instância:

    $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    Para obter mais informações sobre como se conectar à sua instância, consulte Conectar-se à instância do Linux usando um cliente SSH.

  2. Navegue até a seguinte pasta.

    [ec2-user ~]$ cd /opt/aws/bin/
  3. Execute o seguinte comando na sua instância.


    [ec2-user ~]$ ./eic_harvest_hostkeys

    Observe que uma chamada bem-sucedida não resulta em saída.

    Agora é possível usar o cliente EC2 Instance Connect baseado em navegador para se conectar à instância.

Ubuntu
Para resolver o erro de falha de validação da chave de host em uma instância do Ubuntu
  1. Conecte-se à sua instância usando SSH.

    Você pode se conectar usando a CLI do EC2 Instance Connect ou o par de chaves de SSH atribuído à instância quando você a executou e o nome do usuário padrão da AMI usada para executar a instância. Para Ubuntu, o nome de usuário padrão é ubuntu.

    Por exemplo, se a instância tiver sido executada usando o Ubuntu, o nome DNS público da instância for ec2-a-b-c-d.us-west-2.compute.amazonaws.com e o nome do par de chaves for my_ec2_private_key.pem, use o seguinte comando para o SSH na instância:

    $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    Para obter mais informações sobre como se conectar à sua instância, consulte Conectar-se à instância do Linux usando um cliente SSH.

  2. Navegue até a seguinte pasta.

    [ec2-user ~]$ cd /usr/share/ec2-instance-connect/
  3. Execute o seguinte comando na sua instância.


    [ec2-user ~]$ ./eic_harvest_hostkeys

    Observe que uma chamada bem-sucedida não resulta em saída.

    Agora é possível usar o cliente EC2 Instance Connect baseado em navegador para se conectar à instância.

Não é possível conectar a uma instância Ubuntu usando o EC2 Instance Connect

Se você usar o EC2 Instance Connect para se conectar à sua instância do Ubuntu e receber um erro ao tentar se conectar, poderá usar as informações a seguir para tentar corrigir o problema.

Possível causa

O pacote ec2-instance-connect na instância não é a versão mais recente.

Solução

Atualize o pacote ec2-instance-connect na instância para a versão mais recente, desta forma:

  1. Conecte-se à sua instância usando um método diferente do EC2 Instance Connect.

  2. Execute o comando a seguir em sua instância para atualizar o pacote ec2-instance-connect para a versão mais recente.

    apt update && apt upgrade

Perdi minha chave privada. Como posso me conectar à instância?

Se você perder a chave privada de uma instância com EBS, poderá recobrar o acesso à sua instância. É necessário parar a instância, separar seu volume raiz e associá-lo a outra instância como um volume de dados, modificar o arquivo authorized_keys com uma nova chave pública, mover o volume de volta para a instância original e reiniciar a instância. Para obter mais informações sobre executar, conectar e parar instâncias, consulte Alterações do estado de instâncias do Amazon EC2.

Este procedimento é compatível apenas com instâncias com volumes raiz do EBS. Se o dispositivo raiz for um volume de armazenamento de instâncias, você não poderá usar esse procedimento para recuperar o acesso à instância. É necessário ter a chave privada para se conectar à instância. Para determinar o tipo de dispositivo raiz da instância, abra o console do Amazon EC2, escolha Instâncias, selecione a instância, escolha a guia Armazenamento e, na seção Detalhes do dispositivo raiz, verifique o valor de Tipo de dispositivo raiz.

O valor é EBS ou INSTANCE-STORE.

Além das etapas a seguir, há outras formas de se conectar à instância do Linux em caso de perda da chave privada. Para obter mais informações, consulte Como posso me conectar à instância do Amazon EC2 se tiver perdido meu par de chaves SSH após o lançamento inicial?

Etapa 1: Criar um novo par de chaves

Crie um novo par de chaves usando o console do Amazon EC2 ou uma ferramenta de terceiros. Se você quiser nomear seu novo par de chaves exatamente igual ao par de chaves privadas perdido, primeiro exclua o par de chaves existente. Para obter mais informações sobre como criar um par de chaves, consulte Criar um par de chaves usando o Amazon EC2 ou Criar um par de chaves usando uma ferramenta de terceiros e importe a chave pública para o Amazon EC2.

Etapa 2: Obter informações sobre a instância original e seu volume raiz

Anote as seguintes informações, porque elas serão necessárias para a conclusão deste procedimento.

Como obter informações sobre a instância original
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Escolha Instâncias no painel de navegação e selecione a instância à qual você deseja se conectar. (Nós a chamamos de instância original.)

  3. Na guia Details (Detalhes) , anote o ID da instância e a ID da AMI.

  4. Na guia Networking (Redes), anote a zona de disponibilidade.

  5. Na guia Storage (Armazenamento), em Root device name (Nome do dispositivo raiz), anote o nome do dispositivo para o volume raiz (por exemplo, /dev/xvda). Em seguida, em Block devices (Dispositivos de bloco), encontre este nome do dispositivo e anote o ID do volume (por exemplo, vol-0a1234b5678c910de).

Etapa 3: Interromper a instância original

Escolha Instance state (Estado da instância) e Stop instance (Interromper instância). Se essa opção estiver desabilitada, a instância já foi interrompida ou o dispositivo raiz é um volume de armazenamento de instâncias.

Atenção

Quando você interrompe uma instância, os dados em todos os volumes de armazenamento de instâncias são apagados. Para manter dados longe dos volumes de armazenamento de instância, faça backup no armazenamento persistente.

Etapa 4: Executar uma instância temporária

Para executar uma instância temporária
  1. No painel de navegação, escolha Instances (Instâncias) e Launch instances (Executar instâncias).

  2. Na seção Name and tags (Nome e etiquetas), em Name (Nome), insira Temporary (Temporário).

  3. Na seção Application and OS Images (Imagens de aplicações e SO), selecione a mesma AMI usada para iniciar a instância original. Se essa AMI estiver indisponível, será possível criar uma AMI que pode usar a partir da instância interrompida. Para ter mais informações, consulte Criação de uma AMI baseada no Amazon EBS.

  4. Na seção Instance type (Tipo de instância), mantenha o tipo de instância padrão.

  5. Na seção Key pair (Par de chaves), em Key pair name (Nome do par de chaves), selecione o par de chaves existente para usar ou crie um novo.

  6. Na seção Network settings (Configurações de rede), selecione Edit (Editar), e, em seguida, em Subnet (Sub-rede), selecione uma sub-rede na mesma zona de disponibilidade que a instância original.

  7. No painel Summary (Resumo) painel, escolha Launch (Iniciar).

Etapa 5: Separar o volume raiz da instância original e associá-lo à instância temporária

  1. No painel de navegação, selecione Volumes e selecione o volume do dispositivo raiz da instância original (você anotou o ID do volume em uma etapa anterior). Escolha Actions (Ações), Detach Volume (Desanexar volume) e Yes, Detach (Sim, desanexar). Espere o estado do volume tornar-se available. (É possível precisar escolher o ícone Atualizar.)

  2. Com o volume ainda selecionado, escolha Actions (Ações) e, em seguida, Attach volume (Anexar volume). Selecione o ID de instância da instância temporária, anote o nome do dispositivo especificado em Device (Dispositivo) (por exemplo, /dev/sdf) e selecione Attach (Anexar).

    nota

    Se você tiver executado a instância original a partir de uma AMI de AWS Marketplace e seu volume contiver códigos de AWS Marketplace, você deverá primeiro parar a instância temporária antes de associar o volume.

Etapa 6: Adicionar a nova chave pública authorized_keys no volume original montado à instância temporária

  1. Conecte-se à instância temporária.

  2. Na instância temporária, monte o volume que você associou à instância de forma que possa acessar seu sistema de arquivos. Por exemplo, se o nome do dispositivo for /dev/sdf, use os comandos a seguir para montar o volume como /mnt/tempvol.

    nota

    O nome de dispositivo pode aparecer de forma diferente em sua instância. Por exemplo, dispositivos montados como /dev/sdf podem ser exibidos como /dev/xvdf na instância. Algumas versões do Red Hat (ou suas variantes, como o CentOS) podem até mesmo incrementar a letra final com 4 caracteres, em que /dev/sdf torna-se /dev/xvdk.

    1. Use o comando lsblk determinar se o volume é particionado.

      [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 101G 0 disk └─xvdf1 202:81 0 101G 0 part xvdg 202:96 0 30G 0 disk

      No exemplo acima, /dev/xvda e /dev/xvdf são volumes particionados, e /dev/xvdg não é. Se seu volume estiver particionado, você montará a partição (/dev/xvdf1) em vez do dispositivo raw (/dev/xvdf) nas próximas etapas.

    2. Crie um diretório temporário para montar o volume.

      [ec2-user ~]$ sudo mkdir /mnt/tempvol
    3. Monte o volume (ou a partição) no ponto de montagem temporário usando o nome do volume ou do dispositivo identificado anteriormente. O comando necessário depende do sistema de arquivos do sistema operacional. Observe que o nome de dispositivo pode aparecer de forma diferente em sua instância. Consulte note na etapa 6 para obter mais informações.

      • Amazon Linux, Ubuntu e Debian

        [ec2-user ~]$ sudo mount /dev/xvdf1 /mnt/tempvol
      • Amazon Linux 2, CentOS, SUSE Linux 12 e RHEL 7.x

        [ec2-user ~]$ sudo mount -o nouuid /dev/xvdf1 /mnt/tempvol
    nota

    Se você receber um erro informando que o sistema de arquivos está corrompido, execute o seguinte comando para usar o utilitário fsck para verificar o sistema de arquivos e reparar quaisquer problemas:

    [ec2-user ~]$ sudo fsck /dev/xvdf1
  3. Pela instância temporária, use o comando a seguir para atualizar authorized_keys no volume montado com a nova chave pública nova de authorized_keys para a instância temporária.

    Importante

    Os exemplos a seguir usam o nome de usuário ec2-user do Amazon Linux. Você pode precisar substituir um nome de usuário diferente, como ubuntu para instâncias do Ubuntu.

    [ec2-user ~]$ cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Se essa cópia tiver sido bem-sucedida, será possível passar para a próxima etapa.

    (Opcional) Caso contrário, se você não tiver permissão para editar arquivos em /mnt/tempvol, será necessário atualizar o arquivo usando sudo e conferir as permissões no arquivo para verificar se é possível fazer login na instância original. Use o comando a seguir para verificar as permissões no arquivo:

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh total 4 -rw------- 1 222 500 398 Sep 13 22:54 authorized_keys

    Nesta saída de exemplo, 222 é o ID do usuário e 500 é o ID do grupo. Em seguida, use sudo para executar novamente o comando de cópia que falhou.

    [ec2-user ~]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Execute o comando a seguir novamente para determinar se as permissões foram alteradas.

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh

    Se o ID do usuário e do grupo tiverem sido alterados, use o comando a seguir para restaurá-los.

    [ec2-user ~]$ sudo chown 222:500 /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

Etapa 7: Desmontar e separar o volume original da instância temporária e associá-lo novamente à instância original

  1. Na instância temporária, desmonte o volume que você associou para que possa reassociá-lo à instância original. Por exemplo, use o comando a seguir para desmontar o volume em /mnt/tempvol.

    [ec2-user ~]$ sudo umount /mnt/tempvol
  2. Desanexe o volume da instância temporária (você o desmontou na etapa anterior): no console do Amazon EC2, selecione Volumes (Volumes) no painel de navegação, selecione o volume do dispositivo raiz da instância original (você anotou o ID do volume em uma etapa anterior), escolha Actions (Ações), Detach Volume (Desanexar volume) e, depois, Detach (Desanexar). Espere o estado do volume tornar-se available. (É possível precisar escolher o ícone Atualizar.)

  3. Associe o volume novamente à instância original: com o volume ainda selecionado, escolha Actions (Ações), Attach Volume (Anexar volume). Selecione o ID de instância da instância original, especifique o nome do dispositivo anotado anteriormente na etapa 2 para o anexo do dispositivo raiz original (/dev/sda1 ou /dev/xvda) e selecione Attach volume (Anexar volume).

    Importante

    Se você não especificar o mesmo nome do dispositivo do anexo original, não poderá iniciar a instância original. O Amazon EC2 espera que o volume raiz seja sda1 ou /dev/xvda.

Etapa 8: Conectar-se à instância original usando o novo par de chaves

Selecione a instância original e escolha Instance state (Estado da instância) e Start instance (Iniciar instância). Após a instância entrar no estado running, é possível se conectar a ela usando o arquivo de chave privada do seu novo par de chaves.

nota

Se o nome do novo par de chaves e do arquivo de chaves privadas correspondente for diferente do nome do par de chaves original, especifique o nome do novo arquivo de chave privada conectado à sua instância.

Etapa 9: Limpeza

(Opcional) É possível encerrar a instância temporária se não tiver utilização adicional para ela. Selecione a instância temporária e escolha IEstado da instância e Encerrar instância.