Como posso usar um túnel SSH por meio do AWS Systems Manager para acessar meus recursos de VPC privados?

6 minuto de leitura
0

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

session-manager-without-igw

Conecte-se com segurança a uma instância de banco de dados do Amazon RDS ou Amazon EC2 remotamente com sua GUI preferida

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos