Conectando em instâncias AWS/EC2 – erro “Permission Denied (public key)”

E vamos para mais um artigo sobre Amazon Web Services! A propósito, já viu que tem um fórum em português de AWS? 

Quando queremos conectar em uma instância EC2 que criamos, acessamos o console do EC2, e selecionamos a instância que queremos conectar (na área Instances). Com isto nas ações da instância (Instance Actions), aparece o menu “Connect”. Ao fazer isto vai aparecer algo como:

ssh -i nome-arquivo.pem root@id-da-instancia.compute-1.amazonaws.com

O arquivo .pem é da chave de acesso. Você fez download dele quando criou a sua instância. 

O usuário de login pode modificar. Exemplo, usando os AMIs padrões da Amazon o usuário será ec2-user, se você usar uma AMI Ubuntu, normalmente o usuário será ubuntu, se usar alguma AMI da Bitnami, o usuário será bitnami. Nas Red Hat AMIs, normalmente será usado root. 

Depois o endereço da instância é o endereço atual da mesma. Lembre que sempre que você para e inicia uma instância ela ganha um novo endereço. Para manter sempre o mesmo endereço você precisa ter um Elastic IP associado. 

Bom, vamos a situação… quando fiz acesso via SSH recebi um “Permission Denied (public key)“. Revisei tudo que tinha feito, olhei na internet e depois voltei a revisar o meu passo a passo. 

O ponto é que sempre que criamos uma instância, temos que selecionar um Security Group.

Manualmente eu sempre tomei cuidado de criar security groups separados para cada tipo de instância. Só que neste teste que acabou “gerando” a mensagem de erro, eu criei a instância usando o ec2 console tools.

O ponto foi que o security group que estava sendo usado pela instância criada, não estava com a porta 22 liberada! Como eu sempre liberei a porta nos security groups, nunca tinha visto esta mensagem de erro. Por isto que eu sempre falo da importância do Test First, onde podemos ver uma falha, aprender e evoluir.  

Então qual foi a solução? Adicionar a porta de SSH, no caso a porta 22. E também aproveitei para adicionar a porta 80 que eu iria precisar usar. Este teste envolvia um servidor LAMP (Linux, Apache, MySql, PHP). Coloquei uma imagem com as configurações do security group. Com isto garanto que apenas o acesso via SSH e o acesso HTTP está funcionando para a instância em teste. 

Security-group

Quem escreveu este post? Daniel Wildt é CTO da Trevisan Tecnologia e curte ajudar o time a melhorar continuamente. Site no danielwildt.com e twitter @dwildt.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s