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.
eb ssh
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.
eb ssh
Respostas:
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.
elasticbeanstalk-default
grupo de segurança se tiver iniciado uma instância do Elastic Beanstalk nessa região.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
Existing Key Pair
campo. 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 ec2-user@ec2-an-ip-address.compute-1.amazonaws.com
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.
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 ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com
eb ssh production
,. Você também pode configurar um ambiente específico com a opção de configuração:eb ssh production --setup
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)
awsweb...
grupo de segurança e os detalhes devem aparecer na base da páginaBoa sorte
Eu tenho jogado com isso também.
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 ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com
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
Etapas para anexar o par de chaves criado ao ambiente Elastic Beanstalk
AWS -> Serviços -> Elastic Beanstalk
Selecione seu ambiente e clique na configuração à esquerda.
Na Visão geral da configuração, selecione modificar em Segurança.
Em Permissões da máquina virtual, selecione o par de chaves que criamos.
Clique em salvar e, em seguida, em salvar configuração.
Isso levará algum tempo para refletir na sua instância do EC2.
Se você estiver usando bean elástico e EB CLI, use apenas eb ssh
para efetuar login na instância. Você pode usar as opções especificadas no link a seguir
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-ssh.html
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.
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).
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.
Se você configurou a CLI usando eb init
em 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 use
embora 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
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:
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
.
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.
Em seguida, configure e exclua seu aplicativo antigo.