Como posso usar um túnel SSH por meio do AWS Systems Manager para acessar meus recursos de VPC privados?
Quero usar um túnel SSH por meio do AWS Systems Manager para acessar meus recursos de VPC privados. Como posso fazer isso?
Breve descrição
Para criar um túnel SSH, você pode usar o Gerenciador de Sessões, um recurso do AWS Systems Manager que permite usar o encaminhamento de portas para hosts remotos. Esse recurso é compatível com as versões 3.1.1374.0 e posteriores do SSM Agent. O encaminhamento de portas é uma alternativa às etapas abaixo. Para obter mais informações sobre o encaminhamento de portas do host remoto, consulte Iniciar uma sessão.
O Gerenciador de Sessões usa a infraestrutura do Systems Manager para criar uma sessão semelhante a SSH com uma instância. O Gerenciador de Sessões direciona conexões SSH reais, permitindo que você faça um túnel para outro recurso em sua nuvem privada virtual (VPC) diretamente de sua máquina local. Uma instância gerenciada que você cria atua como um bastion host, ou gateway, para seus recursos da AWS.
Os benefícios dessa configuração são:
- Maior segurança: Essa configuração usa somente uma instância do Amazon Elastic Compute Cloud (Amazon EC2) (o bastion host) e conecta a porta de saída 443 à infraestrutura do Systems Manager. Isso permite que você use o Gerenciador de Sessões sem nenhuma conexão de entrada. O recurso local deve permitir tráfego de entrada somente da instância que atua como bastion host. Portanto, não há necessidade de abrir nenhuma regra de entrada publicamente.
- Facilidade de uso: Você pode acessar recursos em sua VPC privada diretamente de sua máquina local.
Observação: Para obter instruções sobre como acessar suas instâncias do EC2 com um terminal ou um único encaminhamento de portas usando o Systems Manager, consulte Configuração do Gerenciador de Sessões.
Pré-requisitos
Conclua os pré-requisitos do Gerenciador de Sessões
Instale o plug-in do Gerenciador de Sessões para a AWS Command Line Interface (AWS CLI)
Permita conexões SSH por meio do Gerenciador de Sessões e certifique-se de que os requisitos de conexão SSH sejam atendidos.
Observação: Você deve ter os seguintes itens instalados para usar o atributo SSH:
1.SSM Agent v2.3.672.0 ou mais recente.
2.Plug-in do Gerenciador de Sessões v1.1.23 ou mais recente em sua máquina local.
3.AWS CLI v1.16.12 ou mais recente em sua máquina local.
Resolução
Para iniciar o túnel SSH usando o Gerenciador de Sessões, siga estas etapas:
Observação: se você receber erros ao executar comandos da AWS CLI,verifique se está usando a versão mais recente da AWS CLI.
1.Para iniciar o túnel SSH, execute o comando a seguir:
ssh -i /path/my-key-pair.pem username@instance-id -L localport:targethost:destport
2.Para testar o acesso ao túnel na porta de destino criada na etapa 1, execute o comando a seguir:
telnet 127.0.0.1 localport
No exemplo anterior, 127.0.0.1 e localport são traduzidos para acessar targethost:destport.
Exemplos de configurações
Cenário 1
Crie um túnel da sua máquina local para acessar um banco de dados MySQL em execução em uma instância do EC2 usando o host SSM como um bastion host.
Recursos usados
instance1: Uma instância do EC2 atuando como um bastion host e gerenciada pelo AWS Systems Manager.
Hostname = ec2-198-51-100-1.compute-1.amazonaws.com Instance id = i-0123456789abcdefa
instance2: Uma instância do EC2 executando o banco de dados MySQL na porta padrão 3306.
Hostname = ec2-198-51-100-2.compute-1.amazonaws.com
Instruções
1.Em uma máquina local (por exemplo, seu laptop), execute o comando SSH para se conectar à instance1 usando o SSH baseado no Gerenciador de Sessões. Esse comando estabelece um túnel para a porta 3306 na instance2 e o apresenta em sua máquina local na porta 9090.
ssh -i /path/key-pair_instance1.pem username_of_instance1@i-0123456789abcdefa -L 9090:ec2-198-51-100-2.compute-1.amazonaws.com:3306
Observação: no exemplo anterior, a porta 9090 está disponível na máquina local.
2.Na máquina local, acesse o banco de dados usando a porta disponível usada na etapa 1 (neste exemplo, 9090).
mysql -u user -h 127.0.0.1 -P 9090 -p password
Observação: quaisquer grupos de segurança, lista de controle de acesso à rede (ACL da rede), regras de segurança ou software de segurança de terceiros que exista na instance2 deve permitir o tráfego a partir da instance1. No exemplo anterior, a instance2 deve permitir o acesso à porta 3306 a partir da instance1.
Cenário 2
Crie três túneis em uma única conexão SSH de sua máquina local para:
- Conectar-se à porta SSH nainstance1
- Acesse um banco de dados MySQL na instância do RDS
- Acesse um servidor web na instance3
Recursos usados
instance1: Uma instância do EC2 atuando como um bastion host e gerenciada pelo AWS Systems Manager.
Hostname = ec2-198-51-100-1.compute-1.amazonaws.com Instance id = i-0123456789abcdefa
Instância do RDS: Uma instância MySQL do RDS localizada em uma sub-rede privada.
Hostname = DBinstanceidentifier.abcdefg12345.region.rds.amazonaws.com
instance3: Uma instância do EC2 localizada em uma sub-rede privada
Hostname = ec2-198-51-100-3.compute-3.amazonaws.com
Instruções
1.Inicie a sessão com três túneis usando o comando SSH.
Observação: há três invocações de túnel separadas no comando.
ssh -i /path/key-pair_instance1.pem username_of_instance1@i-0123456789abcdefa -L 8080:ec2-198-51-100-1.compute-1.amazonaws.com:22 -L 9090:DBinstanceidentifier.abcdefg12345.region.rds.amazonaws.com:3306 -L 9091:ec2-198-51-100-3.compute-1.amazonaws.com:80
Observação: No exemplo anterior, as portas 8080, 9090 e 9091 estão disponíveis na máquina local.
2.Acesse o SSH da máquina local até a instance1. A porta local 8080 faz um túnel para a porta SSH (22) na instance1. O par de chaves e o nome de usuário são para a instância para a qual você está criando túneis (instance1, neste exemplo).
ssh -i /path/key-pair_instance1.pem username_of_instance1@127.0.0.1 -p 8080
3.Acesse o banco de dados na instância do RDS. A porta local 9090 cria um túnel para a porta 3306 na instância do RDS. Você pode usar o MySQL Workbench, que permite acessar o servidor de banco de dados usando a GUI, com 127.0.0.1 como nome de host e 9090 como porta. Ou execute o seguinte comando no prompt de comando do shell:
mysql -u user -h 127.0.0.1 -P 9090 -p password
4.Na máquina local, para acessar o site na instance3, abra o navegador e navegue até o site.
http://127.0.0.1:9091
Importante: quaisquer grupos de segurança, network ACL, regras de segurança ou software de segurança de terceiros que exista na instância do RDS e na instance3 deve permitir o tráfego da instance1. No exemplo anterior, a instance3 deve permitir o acesso à porta 80 a partir da instance1.
Informações relacionadas
Configuração automatizada do Gerenciador de Sessões sem um gateway da internet
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos