Configurar o EC2 Instance Connect - Amazon Elastic Compute Cloud

Configurar o EC2 Instance Connect

Para usar o EC2 Instance Connect para se conectar a uma instância, você precisa configurar todas as instâncias compatíveis usando o Instance Connect (este é um requisito único para cada instância) e será necessário conceder permissão para todos os principais do IAM que usarem o Instance Connect. Depois de concluir as tarefas de configuração a seguir, é possível se conectar à sua instância usando EC2 Instance Connect.

Para obter mais informações sobre como configurar o EC2 Instance Connect, consulte Proteger os bastion hosts com o Amazon EC2 Instance Connect.

Limitações

  • É possível instalar o EC2 Instance Connect nas seguintes distribuições compatíveis do Linux:

    • Amazon Linux 2 (qualquer versão)

    • Ubuntu 16.04 ou posterior

  • Se você definiu as configurações de AuthorizedKeysCommand e AuthorizedKeysCommandUser para a autenticação SSH, a instalação do EC2 Instance Connect não as atualizará. Consequentemente, não será possível usar o Instance Connect.

Pré-requisitos para a instalação EC2 Instance Connect

  • Verifique os pré-requisitos gerais para se conectar à instância usando SSH.

    Para mais informações, consulte Pré-requisitos gerais para conectar-se à instância.

  • Instale um cliente SSH no computador local.

    É muito provável que seu computador local tenha um cliente SSH instalado por padrão. É possível verificar se existe um cliente SSH digitando ssh na linha de comando. Se o seu computador local não reconhecer o comando, será possível instalar um cliente SSH. Para obter informações sobre como instalar um cliente SSH no Linux ou macOS X, consulte http://www.openssh.com. Para obter informações sobre como instalar um cliente SSH no Windows 10, consulte OpenSSH no Windows.

  • Instale a AWS CLI no computador local.

    Para configurar as permissões do IAM, é necessário usar a AWS CLI. Para obter informações sobre como instalar ou atualizar a AWS CLI, consulte Instalar a AWS CLI no Guia do usuário da AWS Command Line Interface.

  • [Ubuntu] Instale a AWS CLI em sua instância.

    Para instalar o EC2 Instance Connect em uma instância do Ubuntu, use a CLI da AWS na instância. Para obter informações sobre como instalar ou atualizar a AWS CLI, consulte Instalar a AWS CLI no Guia do usuário da AWS Command Line Interface.

Tarefa 1: configurar o acesso à rede para uma instância

É necessário configurar o seguinte acesso à rede para que seus usuários possam se conectar à instância usando EC2 Instance Connect:

  • Caso seus usuários acessem sua instância pela Internet, ela deverá ter um endereço IP público e estar em uma sub-rede pública. Para obter mais informações, consulte Habilitar o acesso à Internet no Manual do usuário da Amazon VPC.

  • Caso seus usuários acessem sua instância por meio do endereço IP privado da instância, você deverá estabelecer uma conectividade de rede privada com sua VPC, por meio do AWS Direct Connect, do VPN de local a local da AWS ou do emparelhamento da VPC, para que seus usuários possam acessar o endereço IP privado da instância.

  • Certifique-se de que o grupo de segurança associado à sua instância permita tráfego SSH de entrada na porta 22 a partir do seu endereço IP ou da rede. O grupo de segurança padrão para a VPC não permite o tráfego SSH de entrada por padrão. O grupo de segurança criado pelo assistente de execução permite o tráfego SSH de entrada por padrão. Para obter mais informações, consulte Autorizar tráfego de entrada para suas instâncias do Linux.

  • (Cliente baseado no navegador do console do Amazon EC2) Certifique-se de que o grupo de segurança associado à instância permita tráfego SSH de entrada da faixa de endereços IP para esse serviço. Para identificar o intervalo de endereços, faça download do arquivo JSON fornecido pela AWS e filtre para o subconjunto do EC2 Instance Connect, usando EC2_INSTANCE_CONNECT como valor do serviço. Para obter mais informações sobre como fazer download do arquivo JSON e filtrar por serviço, consulte Intervalos de endereços IP da AWS em Referência geral da Amazon Web Services.

Tarefa 2: (condicional) instalar o EC2 Instance Connect em uma instância

É possível ignorar essa tarefa, caso tenha usado uma das seguintes AMIs para iniciar sua instância, pois elas vêm pré-instaladas com o EC2 Instance Connect:

  • Amazon Linux 2 2.0.20190618 ou posterior

  • Ubuntu 20.04 ou posterior

Para versões anteriores dessas AMIs, você deverá instalar o Instance Connect em todas as instâncias que vão oferecer suporte à conexão usando o Instance Connect.

Instalar o Instance Connect configura o daemon SSH na instância. O procedimento de instalação do Instance Connect é diferente para instâncias em execução que usem o Amazon Linux 2 e o Ubuntu.

Amazon Linux 2

Para instalar EC2 Instance Connect em uma instância aberta com Amazon Linux 2

  1. Conecte-se à sua instância usando SSH.

    Use o par de chaves de SSH atribuído à sua instância ao abri-la e o nome do usuário padrão da AMI usada para abrir a instância. Para Amazon Linux 2, o nome do usuário padrão é ec2-user.

    Por exemplo, se a instância tiver sido executada usando o Amazon Linux 2, o nome DNS público da instância for ec2-a-b-c-d.us-west-2.compute.amazonaws.com e o par de chaves for my_ec2_private_key.pem, use o seguinte comando para o SSH na instância:

    $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    Para obter mais informações sobre como se conectar à sua instância, consulte Conectar-se à instância do Linux usando SSH.

  2. Instale o pacote EC2 Instance Connect na sua instância.

    Para Amazon Linux 2, use o comando yum install.

    [ec2-user ~]$ sudo yum install ec2-instance-connect

    Deverão ser visíveis quatro novos arquivos na pasta /opt/aws/bin/:

    eic_curl_authorized_keys eic_harvest_hostkeys eic_parse_authorized_keys eic_run_authorized_keys
  3. (Opcional) Verifique se o Instance Connect foi instalando com sucesso na sua instância.

    Use o comando sudo less para verificar se o arquivo /etc/ssh/sshd_config foi atualizado corretamente, da seguinte forma:

    [ec2-user ~]$ sudo less /etc/ssh/sshd_config

    O Instance Connect foi instalado com sucesso se as linhas AuthorizedKeysCommand e AuthorizedKeysCommandUser do /etc/ssh/sshd_config contiverem os seguintes valores:

    AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f AuthorizedKeysCommandUser ec2-instance-connect
    • O AuthorizedKeysCommand define o script eic_run_authorized_keys para buscar as chaves nos metadados da instância

    • O AuthorizedKeysCommandUser define o usuário do sistema como ec2-instance-connect

    nota

    Se você tiver previamente configurado AuthorizedKeysCommand e AuthorizedKeysCommandUser, a instalação do Instance Connect não mudará os valores e você não poderá usar Instance Connect.

Ubuntu

Para instalar o EC2 Instance Connect em uma instância aberta com Ubuntu 16.04 ou posterior

  1. Conecte-se à sua instância usando SSH.

    Use o par de chaves de SSH atribuído à sua instância ao abri-la e use o nome do usuário padrão da AMI usada para abrir a instância. Para uma AMI do Ubuntu, o nome de usuário é ubuntu.

    Por exemplo, se a instância tiver sido executada usando Ubuntu, o nome DNS público da instância for my_ec2_private_key.pem e o par de chaves for ec2-a-b-c-d.us-west-2.compute.amazonaws.com, use o seguinte comando para o SSH na instância:

    $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    Para obter mais informações sobre como se conectar à sua instância, consulte Conectar-se à instância do Linux usando SSH.

  2. (Opcional) Garanta que sua instância tenha a AMI do Ubuntu mais recente.

    Para Ubuntu, use os seguintes comandos para atualizar todos os pacotes na instância.

    ubuntu:~$ sudo apt-get update
    ubuntu:~$ sudo apt-get upgrade
  3. Instale o pacote Instance Connect na sua instância.

    Para o Ubuntu, use o comando sudo apt-get.

    ubuntu:~$ sudo apt-get install ec2-instance-connect

    Deverão ser visíveis quatro novos arquivos na pasta /usr/share/ec2-instance-connect/:

    eic_curl_authorized_keys eic_harvest_hostkeys eic_parse_authorized_keys eic_run_authorized_keys
  4. (Opcional) Verifique se o Instance Connect foi instalando com sucesso na sua instância.

    Use o comando sudo less para verificar se o /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf foi atualizado corretamente, da seguinte forma:

    ubuntu:~$ sudo less /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf

    O Instance Connect foi instalado com sucesso se as linhas AuthorizedKeysCommand e AuthorizedKeysCommandUser do /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf contiverem os seguintes valores:

    AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys %%u %%f AuthorizedKeysCommandUser ec2-instance-connect
    • O AuthorizedKeysCommand define o script eic_run_authorized_keys para buscar as chaves nos metadados da instância

    • O AuthorizedKeysCommandUser define o usuário do sistema como ec2-instance-connect

    nota

    Se você tiver previamente configurado AuthorizedKeysCommand e AuthorizedKeysCommandUser, a instalação do Instance Connect não mudará os valores e você não poderá usar Instance Connect.

Para obter mais informações sobre o pacote do EC2 Instance Connect, consulte aws/aws-ec2-instance-connect-config no site do GitHub.

Tarefa 3: (opcional) instalar a EC2 Instance Connect CLI no seu computador

A CLI do EC2 Instance Connect fornece uma experiência simplificada para se conectar a instâncias do EC2 por meio de um único comando, mssh instance_id. Para mais informações, consulte Conectar-se usando a CLI do EC2 Instance Connect.

nota

Não há necessidade de instalar a CLI do EC2 Instance Connect se os usuários só usarem o console da Amazon EC2 (cliente com base em navegador) ou um cliente SSH para se conectar a uma instância.

Como instalar o pacote da CLI do EC2 Instance Connect

Use pip para instalar o pacote ec2instanceconnectcli. Para obter mais informações, consulte aws/aws-ec2-instance-connect-cli no site do GitHub e https://pypi.org/project/ec2instanceconnectcli/ no site de índices de pacotes do Python (PyPI).

$ pip install ec2instanceconnectcli

Tarefa 4: configurar permissões do IAM para o EC2 Instance Connect

Para que os principais do IAM se conectem a uma instância usando o EC2 Instance Connect, é necessário conceder a eles a permissão necessária para enviar a chave pública para a instância. Conceda a eles a permissão criando uma política do IAM e anexando a política aos principais do IAM que exigem a permissão. Para obter mais informações, consulte Ações, recursos e chaves de condição para o Amazon EC2 Instance Connect.

As instruções a seguir explicam como criar a política e anexá-la a um usuário do IAM usando a AWS CLI. A mesma política pode ser aplicada a outros principais do IAM como funções do IAM. Para obter instruções que usam o AWS Management Console, consulte Creating IAM policies (console) (Criar políticas do IAM (console)), Adding permissions by attaching poicies directly to the user (Adicionar permissões anexando políticas diretamente ao usuário) e Creating IAM roles (Ciar funções do IAM) no IAM User Guide (Guia do usuário do IAM).

Para conceder uma permissão do principal do IAM para EC2 Instance Connect (AWS CLI)

  1. Crie um documento de política JSON que inclua o seguinte conteúdo para a nova política:

    • A ação ec2-instance-connect:SendSSHPublicKey. Isso concede ao principal do IAM permissão para enviar a chave pública a uma instância. Com ec2-instance-connect:SendSSHPublicKey, considere restringir o acesso a instâncias do EC2 específicas. Caso contrário, todos os principais do IAM com essa permissão poderão se conectar a todas as instâncias do EC2. Também é possível restringir o acesso especificando ARNs de recursos ou usando tags de recurso como chaves de condição.

    • A condição ec2:osuser. Isso especifica o nome do usuário do sistema operacional que pode enviar por push a chave pública a uma instância. Use o nome de usuário padrão para a AMI que você usou para executar a instância. O nome de usuário padrão para o Amazon Linux 2 é ec2-user e ubuntu, para o Ubuntu.

    • A ação ec2:DescribeInstances. Isso é necessário ao usar a CLI do EC2 Instance Connect porque o wrapper chama essa ação. Os principais do IAM talvez já tenham permissão para chamar essa ação a partir de outra política.

    Veja abaixo um exemplo de documento de política. É possível omitir a instrução para a ação ec2:DescribeInstances se os seus usuários usarem somente um cliente SSH para se conectar às instâncias. É possível substituir as instâncias especificadas em Resource pelo curinga * para conceder aos usuários o acesso a todas as instâncias do EC2 usando o EC2 Instance Connect.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": [ "arn:aws:ec2:region:account-id:instance/i-1234567890abcdef0", "arn:aws:ec2:region:account-id:instance/i-0598c7d356eba48d7" ], "Condition": { "StringEquals": { "ec2:osuser": "ami-username" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }

    A política anterior permite o acesso a instâncias específicas, identificadas por seu ID de instância. Como alternativa, é possível usar tags de recurso para controlar o acesso a uma instância. O controle de acesso por atributo é uma estratégia de autorização que define permissões de acordo com tags que podem ser anexadas a usuários e a recursos da AWS. Por exemplo, a política a seguir permite que um usuário do IAM acesse uma instância somente se essa instância tiver uma tag de recurso com chave=tag-key e valor=tag-value. Para obter mais informações sobre como usar tags para controlar o acesso aos recursos da AWS, consulte Controle do acesso aos recursos da AWS no Guia do usuário do IAM.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ec2-instance-connect:SendSSHPublicKey", "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition":{ "StringEquals":{ "aws:ResourceTag/tag-key":"tag-value" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }
  2. Use o comando create-policy para criar uma nova política gerenciada e especifique o documento JSON que você criou para usar como conteúdo para a nova política.

    $ aws iam create-policy --policy-name my-policy --policy-document file://JSON-file-name
  3. Use o comando attach-user-policy para associar a política gerenciada especificada ao usuário do IAM especificado. No parâmetro --user-name, especifique o nome amigável (não o ARN) do usuário do IAM.

    $ aws iam attach-user-policy --policy-arn arn:aws:iam::account-id:policy/my-policy --user-name IAM-friendly-name