AWS Elasticbean Beanstalk eb ssh usando nomes DNS privados

1

Estou tentando usar o utilitário eb cli (versão 3.8.7) para tentar o SSH para minhas instâncias gerenciadas do ElasticBeanstalk.

As instâncias têm apenas endereços IP privados e estou conectado usando uma VPN ao VPC.

Quando executo o comando eb ssh, ele está tentando se conectar no domínio DNS privado que meu DNS local não consegue resolver

$ eb ssh -n 1
INFO: Attempting to open port 22.
INFO: SSH port 22 open.
INFO: Running ssh -i /Users/dkotvan/.ssh/qa-cert [email protected]
ssh: Could not resolve hostname ip-xxx-xxx-xxx-xxx.ec2.internal: nodename nor servname provided, or not known

Existe uma maneira de configurar o utilitário eb cli para usar o endereço IP local?

    
por Dimas Kotvan 05.01.2017 / 15:37

3 respostas

2

Tanto quanto eu posso ver, não há absolutamente nenhuma maneira de dizer ao eb cli que você deseja se conectar a um ip privado ou dns interno. O principal problema é que, bem, eles estão em uma sub-rede privada e realmente não existe uma maneira de se conectar sem usar outro host que seja publicamente acessível. Consegui resolver isso conectando-me ao host do bastião que está no mesmo VPC que meu ambiente EB. Usando um host bastion é uma prática bastante padrão, então espero que você já tenha um! Então, realmente isso é apenas um problema de ~ / .ssh / config:

Host aws-bastion
  Hostname xxx.xxx.xxx.xxx #bastion public IP
  User your-bastion-user
  IdentityFile ~/.ssh/your-aws-key.pem
  Port 22 # or, a non-standard port if you configured it
  ForwardAgent yes
Host *.ec2.internal
  IdentityFile ~/.ssh/your-aws-key.pem
  ProxyCommand ssh -q aws-bastion nc %h 22
    
por 11.04.2017 / 20:19
0

Você pode configurar um alias no arquivo .ssh/config semelhante a este:

Host ip-xxx-xxx-xxx-xxx.ec2.internal
  Hostname yyy.yyy.yyy.yyy
    
por 10.01.2017 / 19:54
0

Você também pode modificar sshops.py para usar o nome DNS privado. Varia de acordo com o SO e a versão, mas o meu está localizado aqui:

~/Library/Python/2.7/lib/python/site-packages/ebcli/operations/sshops.py

Pesquise PublicIpAddress (o meu está na linha 88) e mude para:

ip = instance['PrivateDnsName'] #was PublicIpAddress

É muito ruim que o EB CLI não esteja no Github ... caso contrário, eu contribuiria com uma maneira de fazer isso por meio de um parâmetro.

Também adicionei um alias conveniente para isso:

alias appname='eb init appname;eb ssh --region=us-east-1 appname -n'

Isso permite executar appname 1 ou appname n , onde n é o número de hosts em seu cluster.

    
por 21.10.2018 / 03:14