Instância de SSH para Elastic Beanstalk

304

Acabei de me inscrever na nova oferta Elastic Beanstalk da Amazon. O que não consigo descobrir é como fazer o SSH para uma instância do Beanstalk. Não tenho uma chave privada porque o Beanstalk gerou a instância em meu nome.

Benno Waldmann
fonte
Então, quando finalmente consigo logar, como chego à pasta em que estou pressionando meu repositório git?
Evolve
Parece que as respostas acima são um pouco datadas. A Amazon tem um bom documento sobre como fazer isso agora. Siga as sugestões acima sobre como criar o par de chaves. Em seguida, siga este procedimento : <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/… Boa sorte!
Jordan Michael Rushing
4
Bem, se você estiver usando o novo v3 de ELB CLI que você pode fazereb ssh
Sharoon Thomas

Respostas:

491

Eu achei que era um processo de duas etapas. Isso pressupõe que você já configurou um par de chaves para acessar instâncias do EC2 na região relevante.

Configurar grupo de segurança

  1. No console da AWS, abra a guia EC2.
  2. Selecione a região relevante e clique em Grupo de Segurança.
  3. Você deve ter um elasticbeanstalk-defaultgrupo de segurança se tiver iniciado uma instância do Elastic Beanstalk nessa região.
  4. Edite o grupo de segurança para adicionar uma regra para acesso SSH. O abaixo irá travá-lo para permitir apenas a entrada de um endereço IP específico.

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Configure o ambiente do seu aplicativo Elastic Beanstalk

  1. Se você ainda não criou um par de chaves, faça um clicando em Pares de Chaves abaixo de Grupo de Segurança na guia ec2.
  2. No console da AWS, abra a guia Elastic Beanstalk.
  3. Selecione a região relevante.
  4. Selecione o ambiente relevante
  5. Selecione Configurações no painel esquerdo.
  6. Selecione segurança.
  7. Em "Par de chaves EC2:", selecione o nome do seu par de chaves no Existing Key Paircampo.

Depois que a instância for reiniciada, você precisará obter o nome do host na guia Instâncias do AWS Console EC2 ou na API. Você deve conseguir fazer o ssh no servidor.

$ ssh -i path/to/keypair.pub [email protected]

Nota: Para adicionar um par de chaves à configuração do ambiente, a proteção de encerramento das instâncias deve estar desativada, pois o Beanstalk tentaria encerrar as instâncias atuais e iniciar novas instâncias com o KeyPair.

Nota: Se algo não estiver funcionando, verifique a guia "Eventos" nos aplicativos / ambientes do Beanstalk e descubra o que deu errado.

jabley
fonte
41
Esta resposta tem 2x mais votos do que qualquer outra resposta; é tecnicamente rigoroso; e extremamente claro. O que está errado com isso? Por que isso não é aceito?
6
Se você receber o erro "Permissão negada (chave pública)" mesmo que tenha seguido as instruções acima, o seguinte pode explicar o motivo: Se sua instalação do EB iniciar mais de uma instância do EC2, você deverá verificar qual deles obtém o par de chaves associado a isto. Você pode apenas SSH para a instância com o par de chaves. Você pode inspecionar as propriedades no menu da instância do EC2 para descobrir.
Por Quested Aronsson
27
A interface pode ter sido alterada aqui. Para mim, as etapas 4 e 5 na segunda seção foram um pouco diferentes. Eu tive que selecionar o ambiente relevante para abrir seu painel e, em seguida, selecionar 'Configuração' à esquerda. Clique no ícone de engrenagem de configurações ao lado de "Instâncias", que abre a página de configurações do servidor. Consegui selecionar um par de chaves EC2 em uma lista suspensa, o que era conveniente. Obrigado pela ótima resposta!
Dallin 02/02
12
Para o comando ssh, você precisará especificar o arquivo da chave privada (.pem) e o nome do usuário @ public_dns_name (não a chave pública, como a resposta implica na extensão .pub). Para Amazon Linux, o nome de usuário padrão é ec2-user. Para RHEL5, o nome do usuário geralmente é raiz, mas pode ser ec2-user. Para o Ubuntu, o nome de usuário é ubuntu. Para o SUSE Linux, o nome do usuário é raiz. Caso contrário, verifique com seu provedor de AMI. (credit: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
5
Essa configuração foi movida para a guia "Segurança" em "Configurações" (portanto, na etapa 6, escolha "Segurança" em vez de "Instâncias")
delucasvb
128

Elastic Beanstalk CLI v3 agora suporta SSH direto com o comando eb ssh. Por exemplo

eb ssh your-environment-name

Não é necessário todo o aborrecimento de configurar grupos de segurança para descobrir o endereço da instância do EC2.

Há também este truque legal:

eb ssh --force

Isso forçará temporariamente a porta 22 a abrir para 0.0.0.0 e a manterá aberta até você exit. Isso combina um pouco dos benefícios da resposta principal, sem problemas. Você pode conceder temporariamente alguém que não seja o seu acesso para depuração e outros enfeites. É claro que você ainda precisará carregar a chave pública no host para que eles tenham acesso. Depois de fazer isso (e enquanto estiver dentro eb ssh), a outra pessoa poderá

ssh [email protected]
Tal
fonte
2
Acabei de instalar o CLI v3 e ele funciona lindamente. Apenas para adicionar, você pode especificar o ambiente anexando-o ao comando, por exemplo eb ssh production,. Você também pode configurar um ambiente específico com a opção de configuração:eb ssh production --setup
jmera
Hmmm não, isso requer que você já tenha a chave privada no seu diretório ~ / .ssh. Algumas pessoas têm, outras não. Caso contrário, você ainda precisará criar e baixar um e configurá-lo no EB.
Jorge Orpinel 10/09
49

Minha experiência em agosto de 2013 com um cliente linux e uma instalação simples do AWS Beanstalk (instância única do EC2) é a seguinte (com base no Community Wiki acima)

Configurar grupo de segurança

  1. No console da AWS, selecione EC2 para acessar o Painel do EC2.
  2. Descubra o grupo de segurança ao qual sua instância do EC2 pertence clicando em Instâncias no painel esquerdo e selecionando a instância à qual você deseja se conectar (no meu caso, existe apenas um - chamado Ambiente Padrão). Os detalhes são mostrados na base da página - Você deve ver um campo para Grupos de segurança - anote o nome - no meu caso "awsweb ...".
  3. No painel esquerdo, selecione Grupos de segurança.
  4. Selecione o awsweb...grupo de segurança e os detalhes devem aparecer na base da página
  5. Selecione a guia Entrada e escolha SSH no menu suspenso "Criar uma nova regra". Insira o endereço IP / CIDR da sua máquina local (da qual você pretende se conectar), por exemplo, 192.168.0.12/32 e clique em Adicionar regra e aplicar alterações de regra.

Criar par de chaves público-privado

  1. No painel do EC2, selecione Pares de teclas no painel esquerdo
  2. Clique em Par de chaves (na parte superior) e insira um nome como myname-pair-key-myregion ou qualquer nome de chave válido que você desejar.
  3. Confirme e aceite o download da chave privada do navegador, salvando-a, por exemplo, no seu diretório pessoal ou onde quiser. Verifique se o diretório possui apenas permissões de gravação para você.

Associar o par de chaves privadas públicas ao servidor EC2 do Elastic Beanstalk

  1. Para adicionar um par de chaves público-privado a uma instância do Elastic Beanstalk EC2, faça: Serviços -> Elastic Beanstalk -> Meu aplicativo -> Ambiente padrão leva você ao ambiente padrão (aquele em que você carrega o aplicativo)
  2. Clique em Configuração (no painel esquerdo) e depois na engrenagem / engrenagem associada a "Instâncias"
  3. Uma página intitulada "Servidor" é exibida
  4. Selecione seu par de chaves pré-construído em Par de chaves EC2 e salve
  5. Alguma mensagem de aviso é exibida, assim como Salvar novamente.

Conecte-se à instância do AWS EC2 usando SSH

  1. Em uma sessão de terminal, mude para o diretório que contém sua chave privada (arquivo .pem).
  2. Se você já fez algumas tentativas para isso, provavelmente deve fazer algo sobre .ssh / known_hosts, se tiver algum, como renomeá-lo. Caso contrário, você poderá receber um erro sobre a alteração da identidade do host.
  3. Faça: ssh -i ./myname-key-pair-my-region.pem [email protected]

Boa sorte

mikemay
fonte
3
Para o comando ssh, você precisará especificar o arquivo da chave privada (.pem) e o nome do usuário @ public_dns_name. Para Amazon Linux, o nome de usuário padrão é ec2-user. Para RHEL5, o nome do usuário geralmente é raiz, mas pode ser ec2-user. Para o Ubuntu, o nome de usuário é ubuntu. Para o SUSE Linux, o nome do usuário é raiz. Caso contrário, verifique com seu provedor de AMI. (credit: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
Esta pergunta tem a melhor explicação para adicionar a parte do par de chaves. Mas gostei de usar o eb-cli para fazer a parte SSH, pois é mais simples. Ainda assim, votei nessa também.
1076 Nick
35

Eu tenho jogado com isso também.

  1. vá para sua guia de serviço de pé de feijão elástico
  2. na visão geral do aplicativo, vá para ação -> editar configuração
  3. adicione o nome de uma chave como aparece na guia EC2 (para a mesma região) à caixa de pares de chaves existente e pressione Aplicar alterações

O serviço será relançado, então faça um café por 5 minutos

Na guia ec2 da mesma região, você verá sua nova instância em execução. ssh para o nome público do DNS como usuário do ec2 usando a chave adicionada em 3, por exemplo, ssh [email protected]

Ray Vahey
fonte
5
Adicionar a parte "ec2-user" foi o meu problema ... Isso deve ser mesclado com a resposta acima;).
Kirill Fuchs
30

Existe uma opção útil 'Conectar' no menu 'Ações da instância' para a instância do EC2. Ele fornecerá o comando SSH exato a ser executado com o URL correto para a instância. As instruções gerais de Jabley estão corretas.

Peter
fonte
24

As respostas acima são um pouco antigas.

Primeiro, crie um par de chaves e depois anexe-o ao ambiente do Elastic Beanstalk.

Etapas para criar um par de chaves

  1. Faça login na AWS
  2. Serviços -> EC2
  3. À esquerda, em REDE E SEGURANÇA, selecione pares de chaves
  4. Selecione Criar novo par de chaves, digite o nome da chave e clique em criar. A chave será baixada automaticamente para o seu sistema.

Etapas para anexar o par de chaves criado ao ambiente Elastic Beanstalk

  1. AWS -> Serviços -> Elastic Beanstalk

  2. Selecione seu ambiente e clique na configuração à esquerda.

  3. Na Visão geral da configuração, selecione modificar em Segurança.

  4. Em Permissões da máquina virtual, selecione o par de chaves que criamos.

  5. Clique em salvar e, em seguida, em salvar configuração.

Isso levará algum tempo para refletir na sua instância do EC2.

cantarh30
fonte
3

Você precisa se conectar diretamente à instância ec2 usando seu endereço IP público. Você não pode se conectar usando o URL do elasticbeanstalk.

Você pode encontrar o endereço IP da instância pesquisando-o no console ec2.

Você também precisa garantir que a porta 22 esteja aberta. Por padrão, o EB CLI fecha a porta 22 após a conclusão de uma conexão ssh. Você pode chamar eb ssh -o para manter a porta aberta após a conclusão da sessão ssh.

Aviso: você deve saber que o pé de feijão elástico pode substituir sua instância a qualquer momento. O estado não é garantido em nenhuma de suas instâncias elásticas do pé de feijão. Provavelmente é melhor usar o ssh apenas para fins de teste e depuração, pois qualquer coisa que você modifique pode desaparecer a qualquer momento.

Siddharth Sharma
fonte
2

A direção para definir o par de chaves para uma instância do ElasticBeanstalk ec2 com a interface do usuário atual é: Aviso: Isso exigirá uma atualização das instâncias do EC2 no aplicativo ElasticBeanstalk. Nota: Você precisará ter criado um par de chaves no painel do EC2 antes disso.

1) No AWS Dashboard, selecione o serviço ElasticBeanstalk 2) Selecione o aplicativo que você deseja usar. 3) Selecione 'Configuração' 4) Selecione o ícone de engrenagem (configurações) na caixa de configuração 'Instâncias'. 5) Isso o levará a uma página intitulada 'Servidor', onde você pode atualizar o campo suspenso 'Par de chaves EC2' com o par de chaves desejado e selecionar 'Salvar'.

Uma coisa a observar é que isso pode não funcionar para aplicativos com várias instâncias (mas acredito que é provável que todos estejam na mesma região que o par de chaves).

adamjk
fonte
1

Eu vim aqui procurando uma maneira de adicionar uma chave a uma instância que o Beanstalk cria durante o provisionamento (estamos usando o Terraform). Você pode fazer o seguinte no Terraform:

resource "aws_elastic_beanstalk_environment" "your-beanstalk" {
   ... 
   setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name      = "EC2KeyName"
      value     = "${aws_key_pair.your-ssh-key.key_name}"
   }
   ...
}

Você pode usar essa chave para SSH na caixa.

Maikon
fonte
1

Se você configurou a CLI usando eb initem seu ambiente, deve ser tão simples quanto

eb ssh --setup o que permitirá que você crie um novo par de chaves ou use um existente, se houver.

Você também pode se conectar ao ambiente existente, eb useembora eu não tenha feito isso.

Para obter detalhes sobre a instalação da CLI - https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install

Andrew Waites
fonte
1

No mac, você pode instalar o cli usando o brew:

brew install awsebcli

Com a ferramenta de linha de comando, você pode ssh com:

eb ssh environment-name

e também realizar outras operações. Isso pressupõe que você adicionou um grupo de segurança que permite o ssh do seu ip.

FabricioG
fonte
0

Dependendo da configuração do seu ambiente, talvez você não tenha um endereço IP público na instância do EC2 criada para o seu ambiente. Você pode verificar por:

  1. Vá para o console do EC2
  2. Encontre sua instância e verifique a guia Descrição
  3. Se não houver IP público ...
  4. Clique em IPs elásticos na navegação
  5. Clique em Alocar novo endereço
  6. Escolha Amazon para a piscina
  7. Clique em Alocar

Por fim, selecione seu novo EIP e escolha Endereço associado no menu de ação. Associe esse IP à sua instância do EC2. Você deve conseguir se conectar usandoeb ssh agora.

Você pode redefinir os detalhes da conexão executando eb ssh --setup.

Matthew Carriere
fonte
-5

Eu também tive o mesmo problema há algum tempo. Eu queria usar o arquivo de chave, mas a Amazon diz em algum lugar que você não pode adicionar um arquivo de chave a um servidor EC2 existente. Para o primeiro aplicativo Beanstalk, a Amazon pré-configura o aplicativo para você. Você precisa criar um novo aplicativo e pode configurar o servidor EC2 que executa o aplicativo Beanstalk para usar um arquivo pem antigo (ppk se estiver usando o Putty) ou criar um novo. Agora você deve poder fazer o SSH.

insira a descrição da imagem aqui

Em seguida, configure e exclua seu aplicativo antigo.

ashraj98
fonte
3
Isto está errado. Você PODE adicionar um arquivo de chave a um aplicativo existente do beanstalk. Ele irá matar / reconstruir-se. Você não precisa excluir / criar aplicativos sozinho.
Nate