Criar uma instância EC2 Amazon e conectar via SSH com Ubuntu

Nos últimos dias venho tentando fazer uma simples conexão SSH com um EC2 e estava com dificuldades para conseguir, pois existe muito tutorial na internet que é antigo e contém alguns erros ou alguns detalhes que foram depreciados pela nova documentação da Amazon, com isto resolvi criar um tutorial para ganharmos tempo em nossas vidas. A intenção ao final dos posts é apresentar o deploy de um app rails usando conexão SSH com ajuda da gem Capistrano.

A maioria dos detalhes neste post foram adquiridos pelas fontes citadas no final do post e pela documentação da Amazon lida em Janeiro de 2013.

1. Criar Instância da Amazon

Crie uma conta no EC2 em seguida abra seu console administrativo e clique em “Launch Instance“.

EC2 Management Console-1

Selecione o Classic Wizard

EC2 Management Console-2Neste caso vou escolher a imagem do Ubuntu LTS 12.04. Na comunidade de AMIS existe várias imagens de servidores pré-configuradas para diversos tipos de ambientes.

EC2 Management Console-3Na próxima tela só iremos escolher uma área entre a A ou B de São Paulo para rodarmos a VM. Preste atenção para não modificar o Instance Type, pois apenas o Micro é gratuito. A não ser que queira algo mais robusto e pague por isto.

EC2 Management Console-4

Nas próximas 2 telas somente avance e ae encontrar a tela abaixo. Iremos criar a chave de acesso à instância, ou seja, você só poderá se conectar ao servidor que esta criando se obtiver esta chave. Guarde-a com segurança, se você perdê-la esqueça sua instância! Você também tem opção de escolher uma já criada ou não usar nenhuma. Dê um nome para a sua nova chave e clique no link para gerá-la e fazer o download:

EC2 Management Console-g

Crie uma pasta chamada .ec2 pelo terminal. Essa pasta será útil mais a frente no tutorial e jogue sua chave nesta pasta, após o download. (OBS: Quando você cria uma pasta ou arquivo com “.” na frente ela se torna oculta, você pode mudar isso nas preferências de visualização das pastas. Preferências > Visão Padrão > Mostrar arquivos ocultos e de backup)

EC2 Management Console-9 EC2 Management Console-10

Além da chave também devemos criar um grupo de segurança que determina quais portas serão liberadas. Iremos usar o default.

EC2 Management Console-6Ao final aparecerá uma tela para revisão dos dados. Click em Lauch e a instância irá subir. Pronto sua instância está criada agora vamos iniciar uma conexão SSH.

No seu console acesse “Security Groups“, selecione o “default“, depois na aba “Inbound“, selecione em “Create new rule“, Custom TCP rule, onde você vai criar uma porte customizada que permitirá uma conexão com seu servidor de qualquer IP através da porta 22. Coloque na “Port range” , 22 e no “Source” deixe como está (0.0.0.0/0). Clique em “Add Rule” e depois “Apply Rule Changes“.

EC2 Management Console-7

2. Conexão com o seu server

Clique com o direito na sua instância e em seguida em “Connect” > “Connect with a standalone SSH Client” será apresentado uma linha de comando para você. Ainda na pasta .ec2 pelo terminal, copie e cole esta linha no seu terminal. Como nossa imagem é Ubuntu você troca na linha de comando o root por ubuntu.

EC2 Management Console-i EC2 Management Console-lEC2 Management Console-11

Se aparecer uma tela semelhante a esta, não apresentando nenhum erro, Parabéns =D … Você está fazendo corretamente e se encontra na sua instância Ubuntu da Amazon.

Agora vamos tornar isso automatizado e com segurança.

3. Instalando EC2-API-TOOLS

Download do Amazon EC2 Command-Line Tools aqui.

Descompate o arquivo dentro a pasta .ec2. Este diretório terá o seguinte:

  • minha_chave.pem
  • bin
  • lib

Agora vamos definir algumas variáveis de ambientes. Você colocará o que é necessário no seu arquivo ~/.bash_profile. Isto vai configurar automaticamente o EC2 todas as vezes que você iniciar uma sessão no terminal.

# Setup Amazon EC2 Command-Line Tools
export EC2_HOME=~/.ec2
export PATH=$PATH:$EC2_HOME/bin
export AWS_ACCESS_KEY=your_AWS_ACCESS_KEY_ID
export AWS_SECRET_KEY=your_AWS_ACCESS_KEY
export JAVA_HOME=/usr

Você pode ter alguns problemas aqui como encontrar o caminho do java no seu Ubuntu. Para descobrir isto basta:

EC2 Management Console-12

Se o endereço foi igual ao da imagem acima, apenas coloque na variavel home até “/usr”, pois o restante do caminho (/bin/java) a própria API do EC2 já coloca automático.

As chaves AWS_ACCESS_KEY e AWS_SECRET_KEY você pode encontrá-las aqui. Caso você não possua as chaves é só você criar uma:

EC2 Management Console-13

Copie e cole esse ID nos campos referidos do seu ~/.bash_profile.

Como você fez algumas alterações você vai precisar recarregá-lo para ter efeito.

EC2 Management Console-14Teste a configuração do ec2-api-tools.

EC2 Management Console-15

Se não apresentar nenhum erro e aparecer algo parecido como esta abaixo, agora você pode criar novas instâncias via terminal, terminá-las (apagá-las), configurá-las como desejar. =]

IMAGE    ami-be5f83d7    amazon/Windows_Server-2003-R2_SP2-English-64Bit-Base-2012.03.13    amazon    available    public        x86_64    machine            windows    instance-store    hvm    xen
IMAGE    ami-9e5f83f7    amazon/Windows_Server-2003-R2_SP2-English-64Bit-SQL_2005_Express-2012.03.13    amazonavailable    public        x86_64    machine            windows    instance-store    hvm    xen
IMAGE    ami-6a5a8603    amazon/Windows_Server-2003-R2_SP2-English-64Bit-SQL_2005_Standard-2012.03.13    amazonavailable    public        x86_64    machine            windows    instance-store    hvm    xen

Espero ter ajudado, qualquer dúvida é só perguntar.

Fonte: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SettingUp_CommandLine.html

http://www.robertsosinski.com/2008/01/26/starting-amazon-ec2-with-mac-os-x/

http://wbotelhos.com/2012/04/04/amazon-ec2-com-java-mysql-e-tomcat

3 Comments

  1. Ola,
    Meu nome eh Elcio, moro na Australia e estou tentando configura do meu Mac usando o FileZila e tudo parece estar correto, com a instancia rodando normalmente, mas nao consigo acesso.
    Seguem as mensagens de erro.

    Error: Disconnected: No supported authentication methods available
    (server sent: publickey)
    Error: Could not connect to server

  2. Só um obrigado!

    Tava começando a configurar um servidor amazon pra testar e mudar minha aplicação da startup pra ele depois e os docs da amazon são muito complexos e não tava sabendo direito como começar.

    Mesmo que inglês não seja um problema, algo em ptbr e organizado facilita muito! Valeu🙂

Deixe uma resposta

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