Tenho um problema que tenho certeza de que outras pessoas se depararam e estou tentando encontrar a melhor solução. Pode ser um pouco longo, então, por favor, descubra comigo.
ATENÇÃO: a porta 22 é apenas uma porta de exemplo, haverá casos em que não é a porta 22 que eu estou tentando lidar.
Grupos de segurança
"server-1" has a security group "group-1"
"server-2" has a security group "group-2"
"server-1" has an elastic ip address assigned to it i.e 111.222.333.444
e
"group-2" is allowed to connect to "group-1" via port 22
Então, se eu ssh de server-2 para server-1 através do seguinte comando
ssh -iKEY.pem [email protected]
a conexão está bem, funciona como esperado.
Se, no entanto, eu tentar conectar-me por esse comando.
ssh -iKEY.pem [email protected]
Não funciona para o que suponho serem razões óbvias
Eu saí da rede aws para conectar ao server-1 e, portanto, o aws vê a conexão do server-2 como um recurso externo e não é mais um aws instância. Isso significa que não usará o grupo de segurança que diz:
"group-2" is allowed to connect to "group-1" via port 22
Problema Real
Eu quero me conectar ao server-1 através do endereço ElasticIP para que eu possa reinicializar com alegria server-1 e / ou server-2 e não precisa se preocupar que o nome da instância do aws / endereço IP foi alterado, ou seja, o nome do domínio no primeiro exemplo ssh será alterado em uma reinicialização / nova instância assumindo o controle.
Então, minha pergunta é qual é a melhor maneira de fazer isso. As opções que posso ver no momento são:
-
Faça uma pesquisa reversa do endereço ElasticIP e conecte-se usando este nome de domínio
forma server-2 para server-1
ou seja, o endereço IP elástico é 111.222.333.444 e a consulta inversa retornará
ec2-111-222-333-444.eu-west-1.compute.amazonaws.com
Eu não posso retransmitir para criar isso manualmente, pois também preciso saber em que zona de disponibilidade a instância está para fazer isso (eu gostaria muito de não me importar com o local).
-
Eu diria que há uma chamada aws api que eu posso fazer para pegar o nome da instância atual que está anexado ao endereço ElasticIP. Não estou muito preocupado com o aplicativo sabendo que ele está em um servidor aws e gostaria de ficar longe da API.
-
Use instâncias vpc dentro do aws. Dessa forma, eu sempre posso anexar o mesmo endereço IP privado ao server-1 e conectar-me a ele de maneira confiável, mesmo após uma reinicialização de qualquer servidor. No entanto, isso parece vir com muita configuração e manutenção.
-
Eu poderia atualizar manualmente qualquer configuração que apontasse para o server-1 após a reinicialização (isso não é uma sugestão de série).
-
Abra a server-1 porta 22 para o mundo (OBSERVAÇÃO: desejo abrir outras portas e não apenas 22) e me preocupo com o aplicativo que está fazendo a autenticação. (novamente, não é realmente uma opção sensata como se eu quisesse abrir a porta 80 para server-2 então ter que usar .htaccess ou similar para autenticar a conexão, portanto apenas movendo este problema e não realmente resolvendo-o) .
O problema que tenho com as opções 1 e 2 é que eu sempre tenho que fazer essas pesquisas, o que produz uma sobrecarga massiva em um aplicativo ou eu armazeno em cache e tenho que conviver com o fato de que se a instância de server- 1 muda, ou seja, ocorre uma reinicialização e, em seguida, há uma hora em que server-2 não será capaz de se conectar ao server-1 até que ele faça o cache das nome da instância.
A opção 3 é provavelmente a melhor solução, no entanto, é fornecida com configuração e manutenção que consome tempo e exige conhecimento extra em nossa empresa.
Alguém tem outra sugestão que funcione?