Configuración de EC2 Instance Connect. - Amazon Elastic Compute Cloud

Configuración de EC2 Instance Connect.

Para usar EC2 Instance Connect a fin de conectarse a una instancia, debe configurar todas las instancias que admitan el uso deInstance Connect (este es un requisito de una sola vez para cada instancia) y debe conceder permiso a todas las entidades de seguridad de IAM que utilicen Instance Connect.

Para obtener más información acerca de la configuración EC2 Instance Connect, consulte Protección de los hosts bastión con Amazon EC2 Instance Connect.

Limitaciones

  • Se admiten las siguientes distribuciones de Linux:

    • Amazon Linux 2 (cualquier versión)

    • Ubuntu 16.04 o versiones posteriores

  • Si ha configurado los ajustes AuthorizedKeysCommand y AuthorizedKeysCommandUser para la autenticación SSH, la instalación de EC2 Instance Connect no los actualizará. En consecuencia, no puede utilizar Instance Connect.

Requisitos previos para la instalación de EC2 Instance Connect

  • Verifique los requisitos previos generales para conectarse a la instancia mediante SSH.

    Para obtener más información, consulte Requisitos previos generales para conexión a la instancia.

  • Instale un cliente SSH en el equipo local.

    Su equipo local muy probablemente tiene un cliente SSH instalado de forma predeterminada. Puede comprobar si tiene un cliente SSH escribiendo ssh en la línea de comandos. Si su equipo local no reconoce el comando, puede instalar un cliente SSH. Para obtener información sobre la instalación de un cliente SSH en Linux o macOS X, consulte http://www.openssh.com. Para obtener más información sobre la instalación de un cliente SSH en Windows 10, consulte OpenSSH en Windows.

  • Instale la AWS CLI en su equipo local.

    Para configurar los permisos de IAM, debe utilizar la AWS CLI. Para obtener más información sobre la instalación de AWS CLI, consulte Instalación de la CLI de AWS en la AWS Command Line Interface Guía del usuario.

  • [Ubuntu] Instale la AWS CLI en su instancia.

    Para instalar EC2 Instance Connect en una instancia de Ubuntu, debe usar la CLI de AWS en la instancia. Para obtener más información sobre la instalación de AWS CLI, consulte Instalación de la CLI de AWS en la AWS Command Line Interface Guía del usuario.

Paso 1: Configurar el acceso a red a una instancia

Debe configurar el siguiente acceso a la red para que los usuarios puedan conectarse a la instancia mediante EC2 Instance Connect:

  • Si los usuarios acceden a su instancia a través de Internet, entonces la instancia debe tener una dirección IP pública. Para obtener más información, consulte Direcciones IPv4 públicas y nombres de alojamiento DNS externos.

  • Si los usuarios acceden a la instancia a través de la dirección IP privada de la instancia, debe establecer conectividad de red privada con la VPC, por ejemplo mediante AWS Direct Connect, la VPN de sitio a sitio de AWS o el emparejamiento de VPC, para que los usuarios puedan llegar a la dirección IP privada de la instancia.

  • Asegúrese de que el grupo de seguridad asociado con la instancia permite el tráfico SSH entrante en el puerto 22 desde la dirección IP o desde la red. El grupo de seguridad predeterminado de la VPC no permite el tráfico SSH entrante de forma predeterminada. El grupo de seguridad creado por el asistente de lanzamiento habilita el tráfico SSH entrante de forma predeterminada. Para obtener más información, consulte Autorizar tráfico entrante para las instancias de Linux.

  • (consola de Amazon EC2 [cliente basado en navegador]) Recomendamos que la instancia permita el tráfico SSH entrante del bloque de IP recomendado publicado para el servicio. Use el filtro EC2_INSTANCE_CONNECT para que el parámetro service obtenga el intervalo de direcciones IP en el subconjunto EC2 Instance Connect. Para obtener más información, consulte Rangos de direcciones IP de AWS en la Referencia general de Amazon Web Services.

Paso 2: Instalación (condicional) de EC2 Instance Connect en una instancia

Amazon Linux 2 2.0.20190618 o posterior y Ubuntu 20.04 o posterior viene preconfigurado con EC2 Instance Connect. Si inició la instancia con una de estas AMI, puede omitir este paso. Para otras distribuciones de Linux compatibles, debe instalar Instance Connect en cada instancia que admita la conexión mediante Instance Connect.

La instalación de Instance Connect configura el daemon SSH en la instancia. El procedimiento para instalar Instance Connect es diferente para instancias lanzadas con Amazon Linux 2 y Ubuntu.

Amazon Linux 2

Para instalar EC2 Instance Connect en una instancia lanzada con Amazon Linux 2

  1. Conéctese a la instancia mediante SSH.

    Use el par de claves SSH que se asignó a su instancia cuando la lanzó y el nombre de usuario predeterminado de la AMI que utilizó para lanzar la instancia. Para Amazon Linux 2, el nombre de usuario predeterminado es ec2-user.

    Por ejemplo, si su instancia se lanzó usando Amazon Linux 2, el DNS público de la instancia es ec2-a-b-c-d.us-west-2.compute.amazonaws.com y el par de claves es my_ec2_private_key.pem. Use el siguiente comando para SSH en su instancia:

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

    Para obtener más información sobre cómo conectarse a la instancia, consulte Conectarse a la instancia de Linux con SSH.

  2. Instale el paquete EC2 Instance Connect en su instancia.

    En Amazon Linux 2, utilice el comando yum install:

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

    Debería ver cuatro scripts nuevos en la carpeta /opt/aws/bin/:

    eic_curl_authorized_keys eic_harvest_hostkeys eic_parse_authorized_keys eic_run_authorized_keys
  3. De forma opcional, compruebe que Instance Connect se ha instalado correctamente en su instancia.

    Use el comando sudo less para comprobar que el archivo /etc/ssh/sshd_config se ha actualizado correctamente como sigue:

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

    Instance Connect se instaló correctamente si las líneas AuthorizedKeysCommand y AuthorizedKeysCommandUser en el archivo /etc/ssh/sshd_config contienen los siguientes valores:

    AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f AuthorizedKeysCommandUser ec2-instance-connect
    • AuthorizedKeysCommand define el script eic_run_authorized_keys para que busque las claves en los metadatos de la instancia

    • AuthorizedKeysCommandUser define al usuario del sistema como ec2-instance-connect

    nota

    SI había configurado antes AuthorizedKeysCommand y AuthorizedKeysCommandUser, instalar Instance Connect no cambiará los valores y no podrá usar Instance Connect.

Ubuntu

Para instalar EC2 Instance Connect en una instancia lanzada con Ubuntu 16.04 o una versión posterior

  1. Conéctese a la instancia mediante SSH.

    Use el par de claves SSH que se asignó a su instancia cuando la lanzó y el nombre de usuario predeterminado de la AMI que utilizó para lanzar la instancia. Para una AMI de Ubuntu, el nombre de usuario es ubuntu.

    Si su instancia se lanzó usando Ubuntu, el nombre de DNS público de la instancia es ec2-a-b-c-d.us-west-2.compute.amazonaws.com y el par de claves es my_ec2_private_key.pem. Use el siguiente comando para SSH en su instancia:

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

    Para obtener más información sobre cómo conectarse a la instancia, consulte Conectarse a la instancia de Linux con SSH.

  2. (Opcional) Asegúrese de que su instancia tenga la AMI de Ubuntu más reciente.

    Para Ubuntu, use los siguientes comandos para actualizar todos los paquetes de su instancia.

    ubuntu:~$ sudo apt-get update
    ubuntu:~$ sudo apt-get upgrade
  3. Instale el paquete Instance Connect en su instancia.

    Para Ubuntu, use el comando sudo apt-get para instalar el paquete .deb.

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

    Debería ver cuatro scripts nuevos en la carpeta /usr/share/ec2-instance-connect/:

    eic_curl_authorized_keys eic_harvest_hostkeys eic_parse_authorized_keys eic_run_authorized_keys
  4. De forma opcional, compruebe que Instance Connect se ha instalado correctamente en su instancia.

    Use el comando sudo less para comprobar que el archivo /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf se ha actualizado correctamente como sigue:

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

    Instance Connect se instaló correctamente si las líneas AuthorizedKeysCommand y AuthorizedKeysCommandUser en el archivo /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf contienen los siguientes valores:

    AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys %u %f AuthorizedKeysCommandUser ec2-instance-connect
    • AuthorizedKeysCommand define el script eic_run_authorized_keys para que busque las claves en los metadatos de la instancia

    • AuthorizedKeysCommandUser define al usuario del sistema como ec2-instance-connect

    nota

    SI había configurado antes AuthorizedKeysCommand y AuthorizedKeysCommandUser, instalar Instance Connect no cambiará los valores y no podrá usar Instance Connect.

Para obtener más información sobre el paquete de EC2 Instance Connect, consulte aws/aws-ec2-instance-connect-config en el sitio web de GitHub.

Paso 3: Instalación (opcional) de la CLI de EC2 Instance Connect

La CLI de EC2 Instance Connect proporciona una experiencia simplificada para conectarse a instancias EC2 mediante un único comando, mssh instance_id. Para obtener más información, consulte Conexión mediante la CLI de EC2 Instance Connect.

nota

No hay necesidad de instalar la CLI de EC2 Instance Connect si los usuarios solo utilizarán la consola de Amazon EC2 (cliente basado en navegador) o un cliente SSH para conectarse a una instancia.

Para instalar el paquete de la CLI de EC2 Instance Connect

Utilice pip para instalar el paquete ec2instanceconnectcli. Para obtener más información, consulte aws/aws-ec2-instance-connect-cli en el sitio web de GitHub y https://pypi.org/project/ec2instanceconnectcli/ en el sitio web de Python Package Index (PyPI).

$ pip install ec2instanceconnectcli

Paso 4: Configuración de los permisos de IAM para EC2 Instance Connect

Para que sus entidades de seguridad de IAM se conecten a una instancia mediante EC2 Instance Connect, debe otorgarles los permisos necesarios para enviar la clave pública a la instancia. Concede el permiso mediante la creación de una política de IAM y al adjuntar la política a las entidades de seguridad de IAM que solicitan dicho permiso. Para obtener más información, consulte Acciones, recursos y claves de condiciones para Amazon EC2 Instance Connect.

Las siguientes instrucciones explican cómo crear la política y asociarla a un usuario de IAM mediante la AWS CLI. La misma política podría aplicarse a otras entidades de seguridad de IAM, como los roles de IAM. Para obtener instrucciones que utilizan la Consola de administración de AWS, consulte Creación de políticas de IAM (consola), Agregado de permisos mediante la asociación de políticas directamente al usuario y Creación de roles de IAM en la Guía del usuario de IAM.

Para conceder un permiso a una entidad de seguridad de IAM para EC2 Instance Connect (AWS CLI)

  1. Cree un documento JSON que incluya lo siguiente:

    • La acción ec2-instance-connect:SendSSHPublicKey. Esto otorga un permiso a una entidad de seguridad de IAM para enviar la clave pública a una instancia. Con ec2-instance-connect:SendSSHPublicKey, plantéese restringir el acceso a instancias EC2 específicas. De lo contrario, todas las entidades de seguridad de IAM con este permiso pueden conectarse a todas las instancias EC2. También puede restringir el acceso mediante la especificación de ARN de recursos o al usar etiquetas de recurso como claves de condición.

    • La condición ec2:osuser. Especifica el nombre del usuario de SO que pueden enviar la clave pública a una instancia. Utilice el nombre de usuario predeterminado para la AMI que utilizó para lanzar la instancia. El nombre de usuario predeterminado para Amazon Linux 2 es ec2-user y ubuntu para Ubuntu.

    • La acción ec2:DescribeInstances. Es necesaria cuando se utiliza la CLI de EC2 Instance Connect ya que el encapsulador llama a esta acción. Es posible que las entidades de seguridad de IAM ya tengan permiso para llamar a esta acción desde otra política.

    A continuación se muestra el ejemplo de documento de política. Puede omitir la instrucción para la acción ec2:DescribeInstances si los usuarios solo utilizarán un cliente SSH para conectarse a sus instancias. Puede sustituir las instancias especificadas en Resource con el comodín * para conceder a los usuarios acceso a todas las instancias EC2 utilizando 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": "*" } ] }

    La política anterior permite el acceso a instancias específicas, identificadas por su ID de instancia. También puede utilizar etiquetas de recursos para controlar el acceso a una instancia. El control de acceso basado en atributos es una estrategia de autorización que define permisos basados en etiquetas que pueden asociarse a usuarios y recursos de AWS. Por ejemplo, la siguiente política permite a un usuario de IAM acceder a una instancia solo si esa instancia tiene una etiqueta de recurso con key=tag-key y value=tag-value. Para obtener más información sobre el uso de etiquetas para controlar el acceso a los recursos de AWS, consulte Control del acceso a los recursos de AWS en la Guía del usuario de 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 el comando create-policy para crear una nueva política administradas y especifique que el documento JSON que ha creado se usará como el contenido de la nueva política.

    $ aws iam create-policy --policy-name my-policy --policy-document file://JSON-file-name
  3. Use el comando attach-user-policy para asociar la política administrada especificada al usuario de IAM especificado. Para el parámetro --user-name, especifique el nombre sencillo (no el ARN) del usuario de IAM.

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