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.
Problemas de conectividade
- Causas comuns de problemas de conexão
- Erro ao se conectar à sua instância: limite de tempo da conexão atingido
- Erro: não foi possível carregar a chave ... Esperando: QUALQUER CHAVE PRIVADA
- Erro: Chave do usuário não reconhecida pelo servidor
- Erro: permissão negada ou conexão fechada pela porta 22 de [instância]
- Erro: arquivo de chave privada desprotegido
- Erro: a chave privada deve começar com "-----BEGIN RSA PRIVATE KEY-----" e terminar com "-----END RSA PRIVATE KEY-----"
- Erro: o servidor recusou nossa chave ou não há métodos de autenticação compatíveis
- Não é possível fazer o ping da instância
- Erro: Server unexpectedly closed network connection (A conexão de rede foi fechada inesperadamente pelo servidor)
- Erro: falha na validação da chave do host para EC2 Instance Connect
- Não é possível conectar a uma instância Ubuntu usando o EC2 Instance Connect
- Perdi minha chave privada. Como posso me conectar à instância?
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
ouec2-user
Debian admin
Fedora fedora
ouec2-user
RHEL ec2-user
ouroot
SUSE ec2-user
ouroot
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.
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, selecione Instâncias e, em seguida, sua instância.
-
Verifique o seguinte:
-
Na coluna Instance state (Estado da instância), verifique se sua instância está no estado
running
. -
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.
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, selecione Instâncias e, em seguida, sua instância.
-
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.
-
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.
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, selecione Instâncias e, em seguida, sua instância.
-
Na guia Networking (Redes), anote os valores para VPC ID (ID da VPC) e Subnet ID (ID de sub-rede).
Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/
. -
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.
-
No painel de navegação, selecione Sub-redes e selecione sua sub-rede.
-
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:-
Escolha o ID da tabela de rotas (rtb-xxxxxxxx) para navegar para a tabela de rotas.
-
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. -
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).
-
Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/
. -
No painel de navegação, escolha Sub-redes.
-
Selecione a sub-rede.
-
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.
-
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.
-
Se sua carga for variável, será possível expandir ou reduzir automaticamente suas instâncias usando o Auto Scaling
e o Elastic Load Balancing . -
Se sua carga estiver crescendo constantemente, é possível mudá-la para um tipo de instância maior. Para ter mais informações, consulte Alterações no tipo de instância do Amazon EC2.
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:
-
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.
-
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?.
-
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
.peminstance-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
ouec2-user
Debian admin
Fedora fedora
ouec2-user
RHEL ec2-user
ouroot
SUSE ec2-user
ouroot
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
.peminstance-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.
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, selecione Instances (Instâncias) e, em seguida, selecione sua instância.
-
Na guia Details (Detalhes), em Instance details (Detalhes da instância), verifique o valor do Nome do par de chaves.
-
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/
devem ser limitadas somente ao proprietário.instance-user-name
/.ssh/authorized_keys
Para verificar as permissões na sua instância
-
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.
-
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.
-
Conecte-se à instância temporária, crie um ponto de montagem e monte o volume associado.
-
Na instância temporária, verifique as permissões do diretório
/home/
do volume associado. Se necessário, ajuste as permissões da seguinte forma:instance-user-name
/[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
-
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
. -
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.
Navegue até o arquivo .pem.
Clique com o botão direito do mouse no arquivo .pem e selecione Properties (Propriedades).
Escolha a guia Segurança.
Selecione Advanced (Avançado).
Verifique se você é o proprietário do arquivo. Caso contrário, altere o proprietário para seu nome de usuário.
Selecione Disable inheritance (Desabilitar herança) e Remove all inherited permissions from this object (Remover todas as permissões herdadas deste objeto).
Selecione Add (Adicionar), Select a principal (Selecionar um principal), insira seu nome de usuário e selecione OK.
Na janela Permission Entry (Entrada de permissão), conceda as permissões Read (Leitura) e selecione OK.
-
Clique em Apply (Aplicar) para garantir que todas as configurações sejam salvas.
Selecione OK para fechar a janela Advanced Security Settings (Configurações avançadas de segurança).
Selecione OK para fechar a janela Properties (Propriedades).
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.
No prompt de comando, navegue até o local do caminho do arquivo .pem.
Execute o seguinte comando para redefinir e remover permissões explícitas:
icacls.exe
$path
/resetExecute o seguinte comando para conceder permissões de leitura ao usuário atual:
icacls.exe
$path
/GRANT:R "$($env:USERNAME):(R)
"Execute o seguinte comando para desabilitar a herança e remover permissões herdadas.
icacls.exe
$path
/inheritance:rVocê 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.
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:
-
Conecte-se à sua instância usando um método diferente do EC2 Instance Connect.
-
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?
Etapas para se conectar a uma instância com EBS com um par de chaves diferente
- Etapa 1: Criar um novo par de chaves
- Etapa 2: Obter informações sobre a instância original e seu volume raiz
- Etapa 3: Interromper a instância original
- Etapa 4: Executar uma instância temporária
- Etapa 5: Separar o volume raiz da instância original e associá-lo à instância temporária
- Etapa 6: Adicionar a nova chave pública authorized_keys no volume original montado à instância temporária
- Etapa 7: Desmontar e separar o volume original da instância temporária e associá-lo novamente à instância original
- Etapa 8: Conectar-se à instância original usando o novo par de chaves
- Etapa 9: Limpeza
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
-
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
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.)
-
Na guia Details (Detalhes) , anote o ID da instância e a ID da AMI.
-
Na guia Networking (Redes), anote a zona de disponibilidade.
-
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
-
No painel de navegação, escolha Instances (Instâncias) e Launch instances (Executar instâncias).
-
Na seção Name and tags (Nome e etiquetas), em Name (Nome), insira Temporary (Temporário).
-
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.
-
Na seção Instance type (Tipo de instância), mantenha o tipo de instância padrão.
-
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.
-
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.
-
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
-
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.) -
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
-
Conecte-se à instância temporária.
-
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/sd
torna-sef
/dev/xvd
.k
-
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. -
Crie um diretório temporário para montar o volume.
[ec2-user ~]$
sudo mkdir /mnt/tempvol
-
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
-
-
Pela instância temporária, use o comando a seguir para atualizar
authorized_keys
no volume montado com a nova chave pública nova deauthorized_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, comoubuntu
para instâncias do Ubuntu.[ec2-user ~]$
cp .ssh/authorized_keys /mnt/tempvol/home/
ec2-user
/.ssh/authorized_keysSe 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_keysNesta saída de exemplo,
222
é o ID do usuário e500
é 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_keysExecute o comando a seguir novamente para determinar se as permissões foram alteradas.
[ec2-user ~]$
sudo ls -l /mnt/tempvol/home/
ec2-user
/.sshSe 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
-
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
-
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.) -
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.