Création d’une connexion SSH avec Amazon EC2 Instance Connect
Lorsque vous exécutez des instances Amazon EC2, vous devez les gérer. La méthode traditionnelle pour gérer des machines Linux distantes consiste à se connecter à Linux via SSH et à exécuter les commandes nécessaires, modifier les fichiers de configuration, etc. Les utilisateurs peuvent se connecter à Linux via SSH en utilisant un nom d’utilisateur et un mot de passe ou par un nom d’utilisateur et une clé de sécurité. Cependant, pour se connecter à des instances EC2 via SSH, les utilisateurs ne peuvent utiliser qu’un nom d’utilisateur et une clé de sécurité. Cette politique est définie dans AWS EC2 pour une meilleure sécurité. Cet article explique comment se connecter à des instances AWS exécutant Linux via SSH from machines fonctionnant sous Windows et Linux.
Téléchargement d’une clé from AWS
Lorsque vous créez une nouvelle instance EC2 par l’assistant dans AWS Management Console, une paire de clés est générée à la fin du processus de création de l’instance EC2. Une paire de clés se compose d’une clé privée et d’une clé publique. Secure Shell (SSH) est le protocole de chiffrement, et la paire de clés est utilisée pour chiffrer la connexion de manière asymétrique. Une clé publique peut être générée par l’utilisation de la clé privée. Lorsqu’une paire de clés est générée pour une instance Amazon EC2, la clé publique est enregistrée dans la configuration de Linux installée sur l’instance Amazon EC2, et la clé privée est téléchargée par l’utilisateur. Vous devez télécharger la clé privée à la dernière étape du processus de création de l’instance Amazon EC2 et enregistrer la clé dans un endroit sûr. L’instance EC2 ne sera créée qu’après le téléchargement de la clé privée. La clé privée est fournie dans un fichier PEM. N’oubliez pas qu’il s’agit de votre seule chance de télécharger la clé pour l’instance AWS EC2 actuelle.
Je télécharge la clé privée et l’enregistre sous le nom blog01-key.pem.
Connexion à l’instance EC2 via SSH à l’aide de PuTTY
PuTTY est un client SSH gratuit que vous pouvez installer sur Windows. Vous devez convertir le fichier PEM téléchargé au format PPK, pris en charge par PuTTY, avant de pouvoir vous connecter à AWS via SSH. Pour cette raison, vous devez utiliser l’utilitaire PuTTY Key Generator (PuTTYgen), qui est installé avec PuTTY from un seul fichier d’installation. Vous pouvez également télécharger puttygen.exe manuellement. PuTTYgen est utilisé pour générer des clés RSA et DSA. Je dispose donc de trois fichiers sur la machine Windows from laquelle je vais me connecter aux instances EC2 :blog01-key.pemputty.exeputtygen.exe.Dans cet exemple,cesfichiers se trouvent dans «C:AWS SSH ».
Ouvrez PuTTY Key Generator (PuTTYgen) par clic sur le fichier puttygen.exe ou sur un raccourci vers ce fichier. Cliquez sur Load dans la fenêtre PuTTYgen.
Cliquez sur Sélectionner tout les fichiers (*.*) et parcourez le fichier PEM. Nous sélectionnons «C:AWS SSHblog01-key.pem ». Cliquez ensuite sur Ouvrir.
Lisez l’avis affiché et cliquez sur OK.
Vous pouvez désormais voir la chaîne de votre clé publique dans la fenêtre de PuTTYgen. Utilisez la configuration telle qu’elle apparaît sur la capture d’écran ci-dessous. Type de clé à générer : RSA Nombrede bits dans une clé générée : 2048 bits Cliquez sur Enregistrer la clé privée.
Êtes-vous sûr de vouloir enregistrer cette clé sans mot de passe pour la protéger ?Cliquez sur Oui si vous acceptez. Si vous n’êtes pas d’accord, revenez en arrière et protégez la clé à l’aide d’une phrase secrète.
Enregistrez la clé privée dans un emplacement sûr. J’enregistre la clé sous le nom «C:AWS SSHAWS EC2 SSH.ppk ». Cliquez sur Enregistrer.
HComment se connecter via SSH à une instance EC2 from Windows
Vérifiez l’adresse IP publique de votre instance AWS EC2. L’instance doit être en état de fonctionnement pour disposer d’une adresse IP publique. Dans mon cas, l’adresse IP publique est 52.55.222.44. J’utiliserai cette adresse IP pour me connecter à AWS via SSH.
Ouvrez PuTTY sous Windows. Exécutez putty.exe ou le raccourci approprié. Allez dans SSH > Auth. Cliquez sur Parcourir et sélectionnez le fichier PPK (la clé privée). Je sélectionne le fichier «C:AWS SSHAWS EC2 SSH.ppk » généré précédemment dans PuTTYgen.
Revenez à l’écran Session dans PuTTY et entrez l’adresse IP publique de votre instance EC2 dans le champ Host Name (Nom d’hôte). (ou adresse IP). Assurez-vous que le type de connexion est SSH. Je saisis 52.55.222.44, qui est l’adresse IP de mon instance EC2 copiée from la console de gestion EC2. Le port TCP 22 est sélectionné. Cliquez sur Ouvrir.
L’alerte de sécurité s’affiche. Lisez le message et cliquez sur Accepter pour continuer et vous connecter à l’instance EC2. Cette boîte de dialogue s’affiche lorsque vous vous connectez pour la première fois à un ordinateur distant particulier. L’empreinte digitale affichée dans le message doit correspondre à celle de l’instance EC2.
Entrez le nom d’utilisateur dans la fenêtre de la console. Comme j’utilise Ubuntu Linux sur mon instance EC2, j’utilise ubuntu, qui est le nom d’utilisateur par défaut configuré pour cette instance, le résultat du déploiement à partir de l’image Amazon Machine Image (AMI) appropriée. Noms d’utilisateur par défaut pour différents types d’AMI Linux dans AWS :
- Amazon Linux 2 ou Amazon Linux AMI : ec2-user
- CentOS : centos ou ec2-user
- Debian : administrateur
- Fedora : fedora ou ec2-user
- Red Hat Enterprise Linux (RHEL) : ec2-user ou utilisateur root
- SUSE : ec2-user ou root
- Ubuntu : ubuntu
- Oracle : utilisateur ec2
- Bitnami : bitnami
Une fois que vous voyez l’invite de commande d’un shell Linux (bash dans ce cas), vous pouvez exécuter des commandes sur la machine Linux distante fonctionnant dans AWS. Cela signifie que vous avez correctement configuré AWS EC2 SSH dans PuTTY.
Transfert de fichiers via SSH vers des instances Amazon EC2
J’ai configuré l’accès SSH distant AWS à l’instance EC2, et je peux désormais me connecter aux instances AWS via SSH, exécuter des commandes, modifier la configuration, etc. Cependant, vous devrez peut-être également transférer des fichiers via SSH vers des instances AWS from votre machine Windows ou dans l’autre sens. Il existe des protocoles de transfert de fichiers qui fonctionnent via SSH pour transférer des fichiers avec sécurité d’une machine à une autre, par exemple le protocole SFTP (Secure File Transfer Protocol) et le protocole SCP (Secure Copy Protocol). Pour transférer des fichiers via SSH vers des instances AWS from Windows, vous pouvez utiliser WinSCP, un outil gratuit pour Windows. Notez que scp doit être installé sur la machine Linux distante fonctionnant dans AWS. Une fois WinSCP installé sur la machine Windows, lancez l’application. Sélectionnez SFTP comme protocole de fichier et, dans le champ Nom d’hôte, entrez l’adresse IP publique de votre instance EC2 à laquelle vous souhaitez vous connecter via SSH pour transférer des fichiers. Entrez un nom d’utilisateur pour votre instance EC2. Dans mon exemple, j’utilise l’adresse IP 52.55.222.44 et le nom d’utilisateur ubuntu. Cliquez sur Avancé dans la fenêtre principale de WinSCP.
Accédez à SSH > Authentification dans la fenêtre Paramètres avancés du site. Cliquez … dans la section Paramètres d’authentification et sélectionnez la clé privée que vous avez précédemment générée dans PuTTYgen. Dans mon cas, je sélectionne «C:AWS SSHAWS EC2 SSH.ppk ». Cliquez sur OK pour enregistrer les paramètres et revenir à la fenêtre principale de WinSCP.
Cliquez sur Connexion dans la fenêtre principale de WinSCP.
Un message d’avertissement s’affiche, comme lors de la première connexion à l’instance EC2 from PuTTY. Cliquez sur Oui pour continuer.
Si la configuration SSH AWS EC2 est correcte et que vous avez défini avec succès les paramètres de connexion SSH dans WinSCP, vous pouvez voir la fenêtre avec deux volets dans le style commander. Le dossier utilisateur de la machine Windows locale s’affiche dans le volet gauche, tandis que le dossier utilisateur de Linux exécuté dans AWS s’affiche dans le volet droit. Vous pouvez glisser-déposer des fichiers from un volet à l’autre et copier, renommer ou supprimer des fichiers sur les machines locales et distantes.
Connexion à AWS via SSH from Linux
Contrairement à Windows, Linux dispose d’un client SSH natif. Dans la console de votre machine Linux locale, utilisez la commande suivante pour vous connecter aux instances AWS EC2 exécutant Linux via SSH :ssh -i nom_fichier.pem ubuntu@adresse_ip Accédezau répertoire où se trouve votre fichier .pem de clé privée sur une machine Linux. Dans cet exemple, j’utilise Ubuntu et j’ai téléchargé le fichier blog01-key.pem dans ~/Downloads/.cd ~/Downloads/ssh -i blog01-key.pem ubuntu@52.55.222.44Where ubuntu est le nom d’utilisateur sur la machine Linux distante, et 52.55.222.44 est l’adresse IP de la machine Linux distante. Si vous exécutez cette commande maintenant, vous obtiendrez l’erreur suivante :Avertissement : fichier de clé privée non protégé.Les autorisations pour « blog01-key.pem » sont trop ouvertes.Il est indispensable que votre clé privée ne soit pas accessible par des tiers. Cette clé privée sera ignorée. Clé de chargement : autorisation du pavé. Autorisation refusée (clé publique).
Vous devez définir des autorisations plus restrictives (plus strictes) pour des raisons de sécurité.chmod 400 ./blog-key.pemUtilisez 400 si les clés doivent être lisibles uniquement par vous. Utilisez 600 si vous avez besoin que les clés soient lisibles et modifiables par vous.Vous pouvez désormais vous connecter aux instances AWS EC2 via SSH from votre machine Linux à l’aide de la commande :ssh -i blog01-key.pem ubuntu@52.55.222.44NowJe suis connecté via SSH à une instance Amazon EC2.
Transfert de fichiers via SSH vers Amazon EC2 sous Linux
Vous pouvez également transférer des fichiers via SSH vers des instances AWS par l’intermédiaire de SCP sous Linux. Assurez-vous d’avoir déjà établi une connexion SSH AWS à l’instance Linux distante from votre machine Linux locale. Ensuite, ouvrez une nouvelle console sur votre machine Linux locale et connectez-vous à l’instance EC2 par la commande suivante :scp -i /path/key_name.pem /path/file_name.txt user_name@ec2_instance_IP_address:/path_to_file Dansmon exemple, j’utilise la commande :scp -i ~/Downloads/blog01-key.pem ~/Downloads/file.txt ubuntu@52.55.222.44:/home/ubuntu
Le transfert de fichiers via SSH vers l’instance AWS s’est déroulé avec succès.
Pour copier un fichier dans le sens inverse (from Linux dans AWS EC2 vers votre machine Linux locale), utilisez la commande suivante :scp -i /path/key_name.pem user_name@ec2_instance_IP_address:/path_to_file/my-file.txt path/my-file2.txt Dansmon cas, j’utilise la commande :scp -i ~/Downloads/blog01-key.pem ubuntu@52.55.222.44:/home/ubuntu/file1.txt ~/Downloads/file1-copy.txt
Comme vous pouvez le voir sur la capture d’écran, le fichier a été copié avec succès. Vous pouvez copier les fichiers importants from une instance Amazon EC2 vers l’ordinateur local requis et pour sauvergarder les fichiers. Effectuez régulièrement la sauvegarde d’AWS EC2 afin d’éviter toute perte de données.
Comment ajouter une nouvelle clé à une instance AWS
Vous pouvez créer une paire de clés supplémentaire pour une instance EC2 existante afin de vous connecter aux instances AWS via SSH après avoir créé l’instance AWS EC2. Vous devrez peut-être effectuer cette opération pour fournir un accès SSH à l’instance EC2 à d’autres utilisateurs. Si vous estimez que l’utilisateur n’a pas besoin de se connecter via SSH aux instances AWS, vous pouvez supprimer la clé publique de la machine Linux exécutée dans AWS EC2 sans avoir à recréer une nouvelle clé à la place de celle générée au moment de la création de l’instance. Ouvrez la console de gestion EC2 dans la console de gestion AWS. Accédez à Réseau et sécurité dans le volet de navigation, puis cliquez sur Paires de clés. Toutes les paires de clés existantes s’affichent sur cette page. Vous pouvez saisir une partie du nom d’une paire de clés existante dans le champ de recherche pour trouver la paire de clés. Cliquez sur le bouton Créer une paire de clés dans le coin supérieur droit de l’interface Web pour créer une nouvelle paire de clés pour une instance EC2 existante.
Sélectionnez .pem comme format de clé privée si vous devez utiliser une clé sous Linux avec OpenSSH ou sélectionnez .ppk si vous devez utiliser la clé sous Windows avec PuTTY. Comme je vais utiliser une machine Linux locale pour me connecter à des instances AWS EC2 via SSH avec une nouvelle clé, je sélectionne l’option de clé .pem. Vous pouvez ajouter des balises si nécessaire. Cliquez sur Créer une paire de clés lorsque vous êtes prêt à continuer.
Enregistrez le fichier téléchargé dans un endroit sûr. Dans mon cas, le nom du fichier téléchargé est blog02-temp.pem et j’enregistre ce fichier dans le répertoire Téléchargements du répertoire utilisateur principal.
Récupération d’une clé publique from la nouvelle paire de clés
Nous avons généré une nouvelle paire de clés dans l’interface Web de la console de gestion AWS. Nous devons maintenant générer une clé publique en utilisant une clé privée from le fichier .pem téléchargé. Utilisez la commande au format suivant :ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem Dansmon cas, la commande est :ssh-keygen -y -f ~/Downloads/blog02-temp.pem Sivous obtenez une erreur, définissez les permissions correctes :chmod 400 ~/Downloads/blog02-temp.pem Sitout est correct, une clé publique générée s’affiche dans la sortie de la console.
Copiez la chaîne de caractères générée et conservez ces informations dans un endroit sûr. Dans cet exemple, j’enregistre la chaîne de clé dans un fichier texte. Copiez la chaîne de clé dans le presse-papiers. Connectez-vous aux instances EC2 via SSH from votre machine Linux locale, comme expliqué plus haut dans cet article.Nous sommes maintenant dans /home/Ubuntu/. Ouvrez le fichier de configuration où sont stockées les clés publiques permettant d’accéder à l’instance Amazon EC2 via SSH à l’aide d’un éditeur de texte :nano ~/.ssh/authorized_keys Lechemin d’accès complet à ce fichier de configuration dépend de l’image machine Amazon (AMI) Linux et peut être :/home/ubuntu/.ssh/authorized_keys/home/ec2-user/.ssh/authorized_keys/root/.ssh/authorized_keys Collezvotre clé depuis le presse-papiers dans la deuxième ligne de ce fichier de configuration. Enregistrez les modifications et fermez le fichier.
Ne fermez pas la console (terminal) avec la session SSH actuelle que vous utilisez pour vous connecter aux instances EC2 avant de vous être assuré que la deuxième clé que vous avez ajoutée fonctionne. Sinon, vous risquez de perdre la connexion SSH si la configuration est incorrecte, sans pouvoir vous connecter aux instances AWS via SSH. Ne vous bloquez pas en cas d’erreur ! Ouvrez un autre terminal sur votre machine Linux locale et essayez de vous connecter à l’instance en utilisant une nouvelle clé. Je me rends dans le répertoire où se trouvent mes fichiers de clé .pem.cd ~/Téléchargements/
Connectez-vous à l’instance EC2 exécutant Linux dans AWS from votre machine Linux locale dans la nouvelle console par la définition de la nouvelle clé privée (blog02-temp.pem dans ce cas).ssh -i blog02-temp.pem ubuntu@52.55.222.44
La connexion SSH AWS a été établie avec succès avec la nouvelle clé. Vous pouvez désormais envoyer la nouvelle clé (blog02-temp.pem) à un utilisateur qui doit établir la connexion SSH AWS. Lorsque vous devrez désactiver l’accès SSH à cette instance AWS EC2 pour l’utilisateur, supprimez la deuxième ligne du fichier .ssh/authorized_keys sur votre instance Linux distante exécutée dans AWS EC2. Étant donné que la configuration SSH AWS avec les deux clés (la première clé générée lors de la création de l’instance EC2 et la deuxième clé créée précédemment pour permettre à un autre utilisateur de se connecter à AWS EC2) fonctionne correctement, vous pouvez fermer les fenêtres du terminal SSH.Si vous supprimez une paire de clés dans Réseau et sécurité > Paires de clés from la console de gestion EC2 (l’endroit où nous avons créé la deuxième clé dans l’interface Web de la console de gestion AWS), les clés à l’intérieur de l’instance EC2 concernée ne sont pas supprimées.
Que faire si vous perdez la clé SSH AWS EC2
Si vous perdez la clé privée permettant de vous connecter à une instance AWS EC2 (générée lors de la création d’une nouvelle instance EC2), vous ne pourrez plus vous connecter à l’instance correspondante. Vous ne pouvez pas générer une nouvelle clé et l’insérer dans le fichier de configuration SSH AWS de l’instance EC2 actuelle. Dans cette situation, vous pouvez utiliser une instance EC2 temporaire à laquelle vous avez accès via SSH. Essayez le workflow suivant pour restaurer l’accès SSH AWS EC2 à l’instance.
- Arrêtez l’instance EC2 d’origine, la clé privée SSH AWS que vous avez perdue.
- Vérifiez les informations à propos des volumes EBS attachés aux instances EC2. Vous devez identifier le volume EBS qui contient le volume racine / monté sur Linux. Notez l’ID de ce volume EBS.
- Lancez une instance temporaire dans AWS EC2. Vous pouvez utiliser l’instance exécutant la même distribution Linux que celle installée sur la machine d’origine (l’AMI du même type).
- Générer une nouvelle paire de clés pour se connecter à AWS dans la console de gestion AWS. Enregistrez la clé privée et préparez la clé publique. Vous devez générer la chaîne de clé de la clé publique pour réparer la configuration SSH AWS stockée sur le volume racine utilisé par l’instance d’origine.
- Créez un répertoire dans Linux exécuté sur l’instance EC2 temporaire et montez le volume EBS contenant la partition racine / de l’instance EC2 d’origine sur l’instance EC2 temporaire. Localisez le volume EBS requis par l’ID de volume que vous avez noté précédemment.
- Ouvrez le fichier de configuration de la clé SSH AWS (qui se trouvait dans un répertoire tel que /home/Ubuntu/.ssh/authorized_keys). Le chemin d’accès change en fonction du répertoire dans lequel vous avez monté la partition racine de l’instance EC2 d’origine. Ajoutez la chaîne de la nouvelle clé publique au fichier de configuration des clés SSH AWS.
- Démontez le volume EBS utilisé par l’instance EC2 d’origine qui est attachée à l’instance EC2 temporaire.
- Remontez le volume EBS contenant le fichier de configuration de clé SSH AWS modifié sur l’instance EC2 d’origine.
- Allumez l’instance EC2 d’origine et connectez-vous à cette instance par l’intermédiaire d’une nouvelle paire de clés via SSH.
Utilisation de EC2 Instance Connect
La gestion des clés est un élément important de l’administration AWS, car vous devez conserver les clés SSH AWS EC2 permettant d’accéder aux instances EC2 dans un endroit sûr et éviter de les perdre. La création et la suppression des clés nécessaires à l’accès temporaire d’autres utilisateurs peuvent constituer une tâche routinière lorsque le nombre d’utilisateurs est important. C’est pour cette raison que Amazon offre la possibilité de se connecter aux instances AWS EC2 via SSH par EC2 Instance Connect. Cette fonctionnalité vous permet d’automatiser la gestion des clés SSH pour vous connecter aux instances AWS. L’idée derrière l’utilisation d’EC2 Instance Connect est de créer des politiques IAM (Identity & Access Management) afin de contrôler de manière centralisée l’accès SSH AWS aux instances EC2 sans avoir à gérer (créer, partage, supprimer) manuellement les clés SSH. Enfin, les utilisateurs peuvent utiliser un client SSH, un client basé sur un navigateur de la console AWS EC2 ou Amazon EC2 Instance Connect CLI pour se connecter aux instances Amazon EC2. L’API Amazon Instance Connect envoie une clé SSH publique à usage unique aux métadonnées de l’instance pendant 60 secondes. La politique IAM associée à l’utilisateur IAM autorise l’utilisateur. L’utilisateur doit se connecter à l’instance EC2 par l’intermédiaire de cette clé dans les 60 secondes. Après que la clé expire, une nouvelle clé doit être utilisée. Amazon Instance Connect bénéficie de la prise en charge pour les instances Amazon EC2 sur lesquelles Ubuntu 16 (ou version ultérieure) et Amazon Linux 2 sont installés. Amazon Instance Connect doit être installé sur l’instance Linux EC2. Une autre condition préalable est l’installation de l’interface CLI AWS sur la machine Linux distante fonctionnant dans AWS. Après l’installation, EC2 Instance Connect exécute le script qui écrit les données dans ces paramètres dans le fichier de configuration (/etc/ssh/sshd_config) du démon du serveur SSH :AuthorizedKeysCommandAuthorizedKeysCommandUserLa configuration AuthorizedKeysCommand mise à jour est utilisée pour lire les clés SSH publiques AWS EC2 à partir des métadonnées de l’instance EC2. Si des valeurs personnalisées ont déjà été saisies pour ces paramètres, Instance Connect ne les met pas à jour (ne les remplace pas), mais vous ne pouvez pas utiliser la fonctionnalité dans ce cas d’utilisation. Vous devez créer un fichier de configuration au format JSON. Ouvrez la console IAM, puis accédez à Politiques et cliquez sur Créer une politique. Vous pouvez également utiliser l’interface de ligne de commande sur votre machine Linux sur laquelle AWS CLI est installé. L’exemple de configuration est présenté ci-dessous. Cette politique peut identifier les instances par leur ID d’instance afin d’autoriser l’accès.{ "Version": "2021-10-17", "Statcodeent": [ { "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", « Resource » : [ « arn:aws:ec2:region:account-id:instance/i-00000000000000000 », « arn:aws:ec2:region:account-id:instance/i-00000000000000001 » ], « Condition » : { « StringEquals » : { « ec2:osuser » : « ami-username » } } }, { « Effect » : « Allow », « Action » : « ec2:DescribeInstances », « Resource » : « * » } ]}Ensuite, la politique doit être activée. La commande AWS CLI permettant d’activer la politique ressemblera à ceci :aws iam create-policy --policy-name my-policy --policy-document file://JSON-file-name Vouspouvez joindre la politique activée à l’utilisateur approprié.aws iam attach-user-policy --policy-arn arn:aws:iam::account-id:policy/my-policy --user-name IAM-friendly-namePour vous connecter à l’instance Amazon EC2 dans la console Amazon EC2, sélectionnez l’instance Amazon EC2 requise, puis cliquez sur le bouton Connect (Se connecter). Sur la page Connect to instance (Se connecter à l’instance), sélectionnez l’onglet EC2 Instance Connect (Se connecter à l’instance EC2) et cliquez sur Connect(Se connecter).
Conclusion
La connexion aux instances AWS EC2 via SSH est une partie importante du processus d’administration AWS EC2. Cet article de blog explique comment configurer AWS EC2 SSH et se connecter à des instances AWS EC2 fonctionnant sous Linux from ordinateurs Linux et Windows locaux. Des paires de clés doivent être utilisées pour établir la connexion SSH avec les instances EC2. Une clé publique est stockée dans la configuration de Linux fonctionnant dans AWS EC2 et une clé privée est utilisée par un client SSH local installé sur la machine d’un utilisateur. Conservez vos clés dans un endroit sûr et effectuez régulièrement des sauvegardes afin d’éviter toute perte de données, de temps et d’argent.

