Comment utiliser un tunnel SSH à travers AWS Systems Manager pour accéder aux ressources de mon VPC privé ?
Je souhaite utiliser un tunnel SSH via AWS Systems Manager pour accéder aux ressources de mon VPC privé. Comment faire ?
Brève description
Pour créer un tunnel SSH, vous pouvez utiliser Session Manager, 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 l'agent SSM. La redirection de port est une alternative aux étapes ci-dessous. Pour plus d'informations sur la redirection de port hôte distant, consultez Démarrer une session.
Le gestionnaire de séance Session Manager utilise l'infrastructure Systems Manager pour créer une séance de type SSH avec une instance. Le gestionnaire de séance tunnelise de véritables connexions SSH. Vous pouvez donc tunneliser vers une autre ressource au sein de votre Virtual Private Cloud (VPC) directement à partir de votre machine locale. Lorsque vous créez une instance gérée, elle se comporte comme un hôte bastion ou une passerelle vers vos ressources AWS.
Cette configuration présente les avantages suivants :
- Sécurité accrue : Cette configuration utilise une seule instance Amazon Elastic Compute Cloud (Amazon EC2), qui est l'hôte bastion ; elle connecte le port sortant 443 à l'infrastructure du Systems Manager. Cela vous permet d'utiliser le gestionnaire de séance sans aucune connexion entrante. La ressource locale doit autoriser le trafic entrant uniquement à partir de l'instance agissant en tant qu'hôte bastion. Par conséquent, il n'est pas nécessaire de définir publiquement une règle.
- Simplicité d'utilisation : Vous pouvez accéder aux ressources de votre VPC privé directement à partir de votre ordinateur local.
Remarque : Pour obtenir des instructions sur la façon d'accéder à vos instances EC2 avec un terminal ou une redirection de port unique à l'aide de Systems Manager, reportez-vous à Configuration du gestionnaire de séance.
Prérequis
Remplissez les conditions préalables du gestionnaire de séance
Installez le plug-in Session Manager pour l'interface de ligne de commande AWS (CLI AWS)
Activez les connexions SSH via le gestionnaire de session et assurez-vous que les exigences de connexion SSH sont satisfaites.
Remarque : Les éléments suivants doivent être installés pour utiliser la fonction SSH :
1. SSM Agent v2.3.672.0 ou version ultérieure.
2. Le plug-in de gestionnaire de séance v1.1.23, ou une version plus récente, sur votre ordinateur local.
3. AWS CLI v1.16.12, ou une version plus récente, sur votre ordinateur local.
Solution
Pour démarrer le tunnel SSH à l'aide du gestionnaire de séance, procédez comme suit :
Remarque : en cas d'erreurs lors de l'exécution de commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d'AWS CLI.
1. Pour démarrer le tunnel SSH, exécutez la commande suivante :
ssh -i /path/my-key-pair.pem username@instance-id -L localport:targethost:destport
2. Pour tester l'accès au tunnel sur le port cible créé à l'étape 1, exécutez la commande suivante :
telnet 127.0.0.1 localport
Dans l'exemple précédent, 127.0.0.1 et localport permettent d'accéder à targethost:destport.
Exemples de configurations
Scénario 1
Créez un tunnel à partir de votre ordinateur local pour accéder à une base de données MySQL s'exécutant sur une instance EC2, à l'aide de l'hôte SSM comme hôte bastion.
Ressources utilisées
instance1 : instance EC2 faisant office d'hôte bastion et gérée par AWS Systems Manager.
Hostname = ec2-198-51-100-1.compute-1.amazonaws.com ID d'instance = i-0123456789abcdefa
instance2 : instance EC2 exécutant la base de données MySQL sur le port par défaut 3306.
Hostname = ec2-198-51-100-2.compute-1.amazonaws.com
Instructions
1. Depuis un ordinateur local (par exemple, votre ordinateur portable), exécutez la commande SSH pour vous connecter à l'instance1, à l'aide de connections SSH gérées par le gestionnaire de séance. Cette commande établit un tunnel vers le port 3306 sur instance2, et le présente sur votre ordinateur local 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 la machine locale.
2. Depuis l'ordinateur local, accédez à la base de données à l'aide du port disponible utilisé à l'étape 1 (9090 dans cet exemple).
mysql -u user -h 127.0.0.1 -P 9090 -p password
Important : tous les groupes de sécurité, listes de contrôle d'accès au réseau (ACL réseau), règles de sécurité ou logiciels de sécurité tiers présents sur instance2 doivent autoriser le trafic depuis l'instance1. Dans l'exemple précédent, l'instance2 doit autoriser l'accès au port 3306 à partir de l'instance1.
Scénario 2
Créez trois tunnels sur une seule connexion SSH depuis votre ordinateur local pour :
- vous connecter au port SSH dans l'instance1 ;
- accéder à une base de données MySQL dans l'instance RDS ;
- accéder à un serveur web dans l'instance3.
Ressources utilisées
instance1 : instance EC2 faisant office d'hôte bastion et gérée par AWS Systems Manager.
Hostname = ec2-198-51-100-1.compute-1.amazonaws.com ID d'instance = i-0123456789abcdefa
Instance RDS : instance MySQL RDS située dans un sous-réseau privé.
Hostname = DBinstanceidentifier.abcdefg12345.region.rds.amazonaws.com
instance3 : instance EC2 située dans un sous-réseau privé
Hostname = ec2-198-51-100-3.compute-3.amazonaws.com
Instructions
1. Démarrez la séance avec trois tunnels, à l'aide de la commande SSH.
Remarque : 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 la machine locale.
2. Accédez à SSH depuis l'ordinateur local vers l'instance1. Le port local 8080 tunnelise vers le port SSH (22) sur l'instance1. La paire de clés et le nom d'utilisateur correspondent à l'instance vers laquelle vous tunnelisez (dans cet exemple, l'instance1).
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 l'instance RDS. Le port local 9090 crée un tunnel vers le port 3306 sur l'instance RDS. Vous pouvez utiliser MySQL Workbench, qui vous permet d'accéder au serveur de base de données à l'aide de l'interface graphique, avec 127.0.0.1 en tant que nom d'hôte et 9090 en tant que port. Sinon, exécutez la commande suivante dans l'invite de commande shell :
mysql -u user -h 127.0.0.1 -P 9090 -p password
4. Depuis la machine locale, pour accéder au site web sur l'instance3, ouvrez le navigateur et naviguez vers le site web.
http://127.0.0.1:9091
Important : tous les groupes de sécurité, listes ACL réseau, règles de sécurité ou logiciels de sécurité tiers présents sur l'instance RDS et l'instance3 doivent autoriser le trafic depuis l'instance1. Dans l'exemple précédent, l'instance3 doit autoriser l'accès au port 80 à partir de l'instance1.
Informations connexes
Configuration automatisée du gestionnaire de séance sans Passerelle Internet
Vidéos associées

Contenus pertinents
- demandé il y a 6 jourslg...
- demandé il y a 2 moislg...
- demandé il y a un moislg...
- demandé il y a un moislg...
- demandé il y a 4 moislg...
- AWS OFFICIELA mis à jour il y a 3 mois
- AWS OFFICIELA mis à jour il y a 2 ans