Comment utiliser un tunnel SSH via Systems Manager pour accéder à mes ressources VPC privées ?

Lecture de 7 minute(s)
0

Je souhaite utiliser un tunnel SSH via AWS Systems Manager pour accéder à mes ressources privées Amazon Virtual Private Cloud (Amazon VPC).

Brève description

Le tunneling SSH, ou redirection de port SSH, est un moyen de transporter des données via une connexion SSH chiffrée. Les tunnels SSH vous permettent de transférer les connexions effectuées sur un port local vers une machine distante via un canal sécurisé. Pour créer un tunnel SSH, utilisez Session Manager. Ce gestionnaire de session est une fonctionnalité d'AWS Systems Manager qui vous permet d'utiliser la redirection de port pour les hôtes distants. Cette fonctionnalité est prise en charge sur les versions 3.1.1374.0 et ultérieures de SSM Agent. La redirection de port est une alternative aux étapes suivantes. Pour en savoir plus, voir Démarrage d'une session (réacheminement de port vers un hôte distant).

Le gestionnaire de session utilise l'infrastructure de Systems Manager pour créer une session avec une instance similaire à SSH. Le gestionnaire de session tunnelise les connexions SSH réelles et vous permet de créer un tunnel vers une autre ressource au sein de votre Amazon VPC, et ce directement depuis votre ordinateur. Une instance gérée que vous créez agit comme un hôte bastion, ou une passerelle, vers vos ressources AWS.

Les avantages de cette configuration sont les suivants :

  • Sécurité accrue : cette configuration utilise une instance Amazon Elastic Compute Cloud (Amazon EC2) (l'hôte bastion) et connecte le port sortant 443 à l'infrastructure Systems Manager. Cela vous permet d'utiliser le gestionnaire de session sans aucune connexion entrante. La ressource locale doit autoriser le trafic entrant uniquement en provenance de l'instance qui fait office d'hôte bastion. Cela évite d'avoir à ouvrir publiquement toute règle entrante.
  • Facilité d'utilisation : vous pouvez accéder aux ressources de votre VPC privé directement depuis votre ordinateur.

**Remarque :**Pour savoir comment accéder à vos instances EC2 à l'aide d'un terminal ou d'une redirection de port unique, voir Configuration de Session Manager.

Prérequis

Complétez les prérequis suivants :

**Remarque :**Les éléments suivants doivent être installés sur votre ordinateur pour pouvoir utiliser la fonctionnalité SSH :

  • SSM Agent v2.3.672.0 ou version ultérieure
  • Plug-in Session Manager v1.1.23 ou version ultérieure
  • AWS CLI v1.16.12 ou version ultérieure

Résolution

Remarque : Si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous que vous utilisez la version la plus récente de l'AWS CLI.

Pour utiliser Session Manager afin de démarrer le tunnel SSH, procédez comme suit :

1.    Exécutez la commande suivante pour démarrer le tunnel SSH :

ssh -i /path/my-key-pair.pem username@instance-id -L localport:targethost:destport

2.    Exécutez la commande suivante pour tester l'accès au tunnel sur le port cible que vous avez créé :

telnet 127.0.0.1 localport

Dans l'exemple précédent, 127.0.0.1 et localport se traduisent par l’accès à targethost:destport.

Exemple de configuration : Utiliser l'hôte SSM comme hôte bastion pour créer un tunnel entre un ordinateur et une base de données MySQL

Créez un tunnel à partir de votre ordinateur pour accéder à une base de données MySQL. La base de données doit s'exécuter sur une instance EC2 et utiliser l'hôte SSM comme hôte bastion.

Ressources utilisées

instance1 : une instance EC2 qui fait office d'hôte bastion et qui est gérée par AWS Systems Manager
Nom d'hôte = ec2-198-51-100-1.compute-1.amazonaws.com, ID d'instance = i-0123456789abcdefa

instance2 : une instance EC2 qui exécute la base de données MySQL sur le port par défaut 3306
Nom d'hôte = ec2-198-51-100-2.compute-1.amazonaws.com

1.    À partir d'un ordinateur (par exemple, votre ordinateur portable), exécutez la commande SSH suivante pour vous connecter à instance1. Cette commande utilise le protocole SSH basé sur Session Manager et établit un tunnel vers le port 3306 sur instance2. Il s'affiche sur votre ordinateur sur le port 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

**Remarque :**Dans l'exemple précédent, le port 9090 est disponible sur votre ordinateur.

2.    Depuis votre ordinateur, utilisez le port disponible à l'étape 1 (port 9090 dans cet exemple) pour accéder à la base de données.

mysql -u user -h 127.0.0.1 -P 9090 -p password

**Remarque : instance2 ** doit autoriser le trafic depuis instance1. Cela inclut tous les groupes de sécurité, la liste de contrôle d'accès réseau (ACL réseau), les règles de sécurité et les logiciels de sécurité tiers qui existent sur instance2. Dans l'exemple précédent, **instance2 ** doit autoriser l'accès au port 3306 depuis instance1.

Exemple de configuration : création de tunnels via une seule connexion SSH pour accéder à la base de données MySQL et à l'instance du serveur Web

Créez trois tunnels via une seule connexion SSH depuis votre ordinateur pour :

  • Vous connecter au port SSH dans instance1
  • Accéder à une base de données MySQL dans une instance RDS
  • Accéder à un serveur Web dans instance3

Ressources utilisées

instance1 : une instance EC2 qui fait office d'hôte bastion et qui est gérée par AWS Systems Manager
Nom d'hôte = ec2-198-51-100-1.compute-1.amazonaws.com, ID d'instance = i-0123456789abcdefa

instance RDS : une instance RDS MySQL située dans un sous-réseau privé
Nom d'hôte = DBInstanceIdentifier.abcdefg12345.region.rds.amazonaws.com

instance3 : une instance EC2 située dans un sous-réseau privé
Nom d'hôte = ec2-198-51-100-3.compute-3.amazonaws.com

1.    Exécutez la commande SSH suivante pour démarrer la session avec trois tunnels. La commande comporte trois appels de tunnel distincts.

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

Remarque : Dans l'exemple précédent, les ports 8080, 9090 et 9091 sont disponibles sur votre ordinateur.

2.    Accédez à SSH depuis votre ordinateur vers instance1. Le port local 8080 crée un tunnel vers le port SSH (22) sur instance1. La paire de clés et le nom d'utilisateur correspondent à l'instance vers laquelle vous créez un tunnel (instance1, dans cet exemple).

ssh -i /path/key-pair_instance1.pem username_of_instance1@127.0.0.1 -p 8080

3.    Accédez à la base de données sur instance RDS. Le port local 9090 crée un tunnel vers le port 3306 deinstance RDS. Utilisez l'interface graphique de MySQL Workbench pour accéder au serveur de la base de données avec 127.0.0.1 comme nom d'hôte et 9090 comme port. Vous pouvez également exécuter la commande suivante dans l'invite de commandes du shell :

mysql -u user -h 127.0.0.1 -P 9090 -p password

4.    Pour accéder au site Web sur instance3, ouvrez le navigateur depuis votre ordinateur et accédez au site Web.

http://127.0.0.1:9091

**Important :**Tous les groupes de sécurité, ACL réseau, règles de sécurité ou logiciels de sécurité tiers qui existent sur instance RDS et instance3 doivent autoriser le trafic depuis instance1. Dans l'exemple précédent, **instance3 ** doit autoriser l'accès au port 80 depuis instance1.

Informations connexes

Configuration automatique de Session Manager sans passerelle Internet

session-manager-without-igw (sur le site Web de GitHub)

Connexion à distance en toute sécurité à une instance de base de données Amazon RDS ou Amazon EC2 avec votre interface graphique préférée

Comment créer des points de terminaison VPC pour utiliser Systems Manager afin de gérer des instances EC2 privées sans accès à Internet ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois