AWS Connect to an EC2 Instance - Part 2: EC2 Instance Connect

Deuxième partie de la série AWS : Connexion à une instance EC2 avec EC2 Instance Connect

Je suis ravi de vous présenter la deuxième partie de notre série sur la connexion à une instance EC2, où nous allons explorer la méthode utilisant “EC2 Instance Connect”. Dans cet article, nous découvrirons comment se connecter à une instance sans avoir besoin de stocker des clés SSH.

Qu’est-ce que EC2 Instance Connect ?

Dans le précédent article nous avons vu comment se connecter à une instance de manière classique en SSH. Pratique et rapide pour se connecter à une instance, mais dans le cloud il n’est pas rare d’avoir tout une flotte d’instances à gouverner et la gestion du cycle de vie des clés SSH peut devenir un réel casse-tête.

Instance Connect est un service proposé par AWS qui permet de se connecter à une instance EC2 sans avoir à gérer des clés SSH. AWS génère et manage automatiquement des clés SSH temporaires pour vous, simplifiant ainsi le processus de connexion sécurisée à vos instances.

Comment EC2 Instance Connect fonctionne

Lorsque la fonction EC2 Instance Connect est activée sur une instance, le démon SSH (sshd) de cette instance est configuré avec un script AuthorizedKeysCommand personnalisé. Ce script met à jour AuthorizedKeysCommand pour lire les clés publiques SSH à partir des métadonnées de l’instance pendant le processus d’authentification SSH, et vous connecte à l’instance.

Les clés publiques SSH ne peuvent être utilisées qu’une seule fois pendant 60 secondes dans les métadonnées de l’instance. Pour vous connecter à l’instance avec succès, vous devez vous connecter à l’aide de SSH pendant cette période. Comme les clés expirent, il n’est pas nécessaire de suivre ou de gérer ces clés directement, comme vous le faisiez auparavant.

Comment utiliser EC2 Instance Connect

Créer une instance sans clés SSH

Le fait de ne pas associer de clés SSH n’est pas obligatoire, Instance Connect fonctionnera tout aussi bien. Mais dans le but de ne plus avoir à se soucier du cycle de vie des clés SSH, dans cet exemple nous n’utilisons pas de clés.

Assurez-vous de lui associer une IP publique !

Instance Connect est installé par défaut sur les AMI suivante:

  • Amazon Linux 2 2.0.20190618 or later
  • Ubuntu 20.04 or later

Si votre AMI ne fait pas partie de cette liste, voici un article qui explique comment l’installer sur tous types d’instances.

Ouvrir le port SSH sur le range AWS

Assurez-vous d’ouvrir le port SSH (par défaut, le port 22) dans le groupe de sécurité associé à votre instance, avec comme source le range d’IPs d’AWS, pour le trafic entrant (inbound).

Vous trouverez la liste des ranges IPs d’AWS here. Elles sont classées par région et par service.

Pour vous aider à déterminer celle qui vous sied, vous pouvez télécharger cette liste et lancer la commande suivante:

Windows

Get-AWSPublicIpAddressRange -Region us-east-1 -ServiceKey EC2_INSTANCE_CONNECT | select IpPrefix

Linux

jq -r ‘.prefixes[] | select(.region==”us-east-1″) | select(.service==”EC2_INSTANCE_CONNECT”) | .ip_prefix’ < ip-ranges.json

Assurez-vous de modifier la région en lien avec la région sur laquelle est déployé votre instance.

Pour plus de détails voir cet article.

Configurer les droits IAM

Pour utiliser Instance Connect, vous devez configurer les autorisations IAM appropriées.

L’utilisateur IAM doit être en mesure de pouvoir transmettre ses clés SSH à EC2 Instance Connect.

Exemple de policy:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2-instance-connect:SendSSHPublicKey"
            ],
            "Resource": [
                "arn:aws:ec2:$REGION:$ACCOUNTID:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ec2-user"
                }
            }
        }
    ]
}

Une fois cette policy créé, vous pouvez directement l’assigner à un utilisateur, un group ou un rôle qui sera assumé pour l’utilisateur IAM.

Se connecter depuis la console ou un terminal

Une fois les étapes précédentes terminées, vous êtes prêt à vous connecter à votre instance EC2 à l’aide d’Instance Connect. Vous pouvez le faire

Directement depuis la console AWS en sélectionnant l’instance puis “Connect” puis “EC2 Instance Connect”

  • En utilisant un terminal SSH avec la commande
aws ec2-instance-connect send-ssh-public-key

Concernant le username, je vous renvoie sur le précédent article de cette série où je liste les username par défaut en fonction des AMI utilisées.

AWS Connexion à une instance EC2 – Partie 1: Les Clés SSH

Avec EC2 Instance Connect, la gestion des clés SSH devient plus simple et plus sécurisée, puisque celles-ci sont générées et gérées par AWS de manière éphémère. Vous pouvez ainsi vous concentrer sur votre travail et éviter les tracas liés à la gestion des clés SSH.

Ces informations sont correctes au moment de la rédaction de l’article, cependant, il est important de noter que les services AWS évoluent constamment. Il est possible que certaines fonctionnalités, noms, etc. soient différents ou aient changé depuis lors.

Caroline Reverchon

en_GB