Instance SSH vers Elastic Beanstalk

304

Je viens de m'inscrire à la nouvelle offre Elastic Beanstalk d'Amazon. Ce que je ne peux pas comprendre, c'est comment SSH vers une instance Beanstalk. Je n'ai pas de clé privée car Beanstalk a généré l'instance en mon nom.

Benno Waldmann
la source
Donc, une fois que je me suis enfin connecté, comment puis-je accéder au dossier dans lequel je pousse mon git repo?
Evolve
Il semble que les réponses ci-dessus soient quelque peu datées. Amazon a un bon document sur la façon de le faire maintenant. Suivez les suggestions ci-dessus pour créer la paire de clés. Suivez ensuite ceci: <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/… Bonne chance!
Jordan Michael Rushing
4
Eh bien, si vous utilisez la nouvelle v3 d'ELB CLI, vous pouvez le faireeb ssh
Sharoon Thomas

Réponses:

491

J'ai trouvé que c'était un processus en 2 étapes. Cela suppose que vous avez déjà configuré une paire de clés pour accéder aux instances EC2 dans la région concernée.

Configurer le groupe de sécurité

  1. Dans la console AWS, ouvrez l'onglet EC2.
  2. Sélectionnez la région appropriée et cliquez sur Groupe de sécurité.
  3. Vous devriez avoir un elasticbeanstalk-defaultgroupe de sécurité si vous avez lancé une instance Elastic Beanstalk dans cette région.
  4. Modifiez le groupe de sécurité pour ajouter une règle d'accès SSH. Ce qui suit le verrouillera pour n'autoriser l'entrée qu'à partir d'une adresse IP spécifique.

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Configurer l'environnement de votre application Elastic Beanstalk

  1. Si vous n'avez pas encore créé de paire de clés, faites-en une en cliquant sur Paires de clés sous Groupe de sécurité dans l'onglet ec2.
  2. Dans la console AWS, ouvrez l'onglet Elastic Beanstalk.
  3. Sélectionnez la région appropriée.
  4. Sélectionnez un environnement pertinent
  5. Sélectionnez Configurations dans le volet gauche.
  6. Sélectionnez Sécurité.
  7. Sous "Paire de clés EC2:", sélectionnez le nom de votre paire de clés dans le Existing Key Pairchamp.

Une fois l'instance relancée, vous devez obtenir le nom d'hôte à partir de l'onglet Instances AWS Console EC2 ou via l'API. Vous devriez alors pouvoir accéder à ssh sur le serveur.

$ ssh -i path/to/keypair.pub [email protected]

Remarque: Pour ajouter une paire de clés à la configuration de l'environnement, la protection de terminaison des instances doit être désactivée car Beanstalk essaierait de terminer les instances actuelles et de démarrer de nouvelles instances avec KeyPair.

Remarque: Si quelque chose ne fonctionne pas, vérifiez l'onglet "Événements" dans l'application / les environnements Beanstalk et découvrez ce qui n'a pas fonctionné.

jabley
la source
41
Cette réponse a 2x plus de votes que toute autre réponse; est techniquement rigoureux; et extrêmement clair. Qu'est-ce qui va pas avec ça? Pourquoi n'est-il pas accepté?
6
Si vous obtenez l'erreur «Autorisation refusée (publickey)» même si vous avez suivi les instructions ci-dessus, les raisons suivantes peuvent expliquer pourquoi: Si votre configuration EB lance plusieurs instances EC2, vous devez vérifier laquelle obtient la paire de clés associée à il. Vous pouvez uniquement SSH à l'instance avec la paire de clés. Vous pouvez inspecter les propriétés dans le menu d'instance EC2 pour le découvrir.
Per Quested Aronsson
27
L'interface peut avoir changé ici. Pour moi, les étapes 4 et 5 de la deuxième section étaient légèrement différentes. J'ai dû sélectionner l'environnement approprié pour ouvrir son tableau de bord, puis sélectionner «Configuration» sur la gauche. Cliquez sur l'icône d'engrenage de paramètres à côté de «Instances», ce qui fait apparaître la page de paramètres du serveur. J'ai pu sélectionner une paire de clés EC2 dans une liste déroulante, ce qui était pratique. Merci pour la bonne réponse!
Dallin
12
Pour la commande ssh, vous devrez spécifier le fichier de clé privée (.pem) et user_name @ public_dns_name (pas la clé publique, comme la réponse l'indique par l'extension .pub). Pour Amazon Linux, le nom d'utilisateur par défaut est ec2-user. Pour RHEL5, le nom d'utilisateur est souvent root mais peut être ec2-user. Pour Ubuntu, le nom d'utilisateur est ubuntu. Pour SUSE Linux, le nom d'utilisateur est root. Sinon, consultez votre fournisseur AMI. (crédit: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
5
Ce paramètre a été déplacé vers l'onglet "Sécurité" sous "Configurations" (donc à l'étape 6, choisissez "Sécurité" au lieu de "Instances")
delucasvb
128

Elastic beanstalk CLI v3 prend désormais en charge SSH direct avec la commande eb ssh. Par exemple

eb ssh your-environment-name

Pas besoin de tous les tracas de la mise en place de groupes de sécurité pour trouver l'adresse de l'instance EC2.

Il y a aussi cette astuce sympa:

eb ssh --force

Cela forcera temporairement le port 22 à s'ouvrir à 0.0.0.0, et le gardera ouvert jusqu'à ce que vous exit. Cela allie un peu les avantages de la meilleure réponse, sans les tracas. Vous pouvez accorder temporairement à une autre personne que vous un accès pour le débogage et ainsi de suite. Bien sûr, vous devrez toujours télécharger leur clé publique sur l'hôte pour qu'ils y aient accès. Une fois que vous faites cela (et tant que vous êtes à l'intérieur eb ssh), l'autre personne peut

ssh [email protected]
Tal
la source
2
Je viens d'installer CLI v3 moi-même et cela fonctionne à merveille. Il suffit d'ajouter, vous pouvez spécifier l'environnement en l' ajoutant à la commande, par exemple eb ssh production. Vous pouvez également configurer un environnement spécifique avec l'option de configuration:eb ssh production --setup
jmera
Hmmm non, cela nécessite que vous ayez déjà la clé privée dans votre répertoire ~ / .ssh. Certaines personnes l'ont, d'autres non. Si vous ne le faites pas, vous devez toujours en créer et en télécharger un, et le configurer dans EB.
Jorge Orpinel
49

Mon expérience en août 2013 avec un client Linux et une simple installation AWS Beanstalk (instance EC2 unique) est la suivante (basée sur le wiki communautaire ci-dessus)

Configurer le groupe de sécurité

  1. Dans la console AWS, sélectionnez EC2 pour accéder au tableau de bord EC2
  2. Découvrez le groupe de sécurité auquel appartient votre instance EC2 en cliquant sur Instances dans le panneau de gauche, puis en sélectionnant l'instance à laquelle vous souhaitez vous connecter (dans mon cas, il n'y en a qu'une - appelée environnement par défaut). Les détails sont affichés en bas de la page - Vous devriez voir un champ pour les groupes de sécurité - notez le nom - dans mon cas "awsweb ...".
  3. Dans le panneau de gauche, sélectionnez Groupes de sécurité.
  4. Sélectionnez le awsweb...groupe de sécurité et les détails devraient apparaître en bas de la page
  5. Sélectionnez l'onglet Entrant et choisissez SSH dans la liste déroulante "Créer une nouvelle règle". Insérez l'adresse IP / CIDR de votre machine locale (à partir de laquelle vous avez l'intention de vous connecter), par exemple 192.168.0.12/32 et cliquez sur Ajouter une règle et appliquer les modifications de règles.

Créer une paire de clés publique-privée

  1. Dans le tableau de bord EC2, sélectionnez Paires de clés dans le panneau de gauche
  2. Cliquez sur Paire de clés (en haut) et entrez un nom tel que myname-key-pair-myregion ou le nom de clé valide que vous souhaitez.
  3. Confirmez puis acceptez le téléchargement de la clé privée à partir du navigateur en l'enregistrant par exemple dans votre répertoire personnel ou là où vous le souhaitez. Assurez-vous que le répertoire n'a que des autorisations d'écriture pour vous.

Associer la paire de clés privées publiques au serveur Elastic Beanstalk EC2

  1. Pour ajouter une paire de clés publique-privée à une instance Elastic Beanstalk EC2, procédez comme suit: Services -> Elastic Beanstalk -> Mon application -> Environnement par défaut vous amène à l'environnement par défaut (celui où vous téléchargez votre application)
  2. Cliquez sur Configuration (sur le panneau de gauche) puis sur l'engrenage / rouage associé à "Instances"
  3. Une page intitulée "Serveur" s'affiche
  4. Sélectionnez votre paire de clés prédéfinie dans la paire de clés EC2 et effectuez la sauvegarde
  5. Un message d'avertissement s'affiche, recommencez l'enregistrement.

Se connecter à l'instance AWS EC2 à l'aide de SSH

  1. Dans une session de terminal, accédez au répertoire contenant votre clé privée (fichier .pem).
  2. Si vous avez essayé plusieurs fois, vous devriez probablement faire quelque chose à propos de .ssh / known_hosts si vous en avez un, comme le renommer. Sinon, vous risquez d'obtenir une erreur indiquant que l'identité de l'hôte a changé.
  3. À faire: ssh -i ./myname-key-pair-my-region.pem [email protected]

Bonne chance

mikemay
la source
3
Pour la commande ssh, vous devrez spécifier le fichier de clé privée (.pem) et user_name @ public_dns_name. Pour Amazon Linux, le nom d'utilisateur par défaut est ec2-user. Pour RHEL5, le nom d'utilisateur est souvent root mais peut être ec2-user. Pour Ubuntu, le nom d'utilisateur est ubuntu. Pour SUSE Linux, le nom d'utilisateur est root. Sinon, consultez votre fournisseur AMI. (crédit: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
Cette question a la meilleure explication pour ajouter la partie paire de clés. Mais j'ai aimé utiliser l'eb-cli pour faire la partie SSH car c'est plus simple. Pourtant, j'ai également voté pour celui-ci.
Nick
35

J'ai aussi joué avec ça.

  1. passez à votre onglet de service de haricot élastique
  2. sur l'aperçu de votre application goto action -> modifier la configuration
  3. ajoutez le nom d'une clé tel qu'il apparaît dans votre onglet EC2 (pour la même région) à la boîte de paire de clés existante et appuyez sur Appliquer les modifications

Le service sera relancé alors faites un café pendant 5 minutes

Sur votre onglet ec2 pour la même région, vous verrez votre nouvelle instance en cours d'exécution. ssh au nom du DNS public en tant qu'utilisateur ec2 en utilisant la clé ajoutée en 3, par exemple ssh [email protected]

Ray Vahey
la source
5
L'ajout de la partie "ec2-user" était mon problème ... Cela devrait être fusionné avec la réponse ci-dessus;).
Kirill Fuchs
30

Il existe une option pratique «Connecter» dans le menu «Actions d'instance» pour l'instance EC2. Il vous donnera la commande SSH exacte à exécuter avec l'url correcte pour l'instance. Les instructions générales de Jabley sont correctes.

Peter
la source
24

Les réponses ci-dessus sont un peu anciennes.

Créez d'abord une paire de clés, puis attachez-la à l'environnement Elastic Beanstalk.

Étapes pour créer une paire de clés

  1. Connectez-vous à AWS
  2. Services -> EC2
  3. À gauche sous RÉSEAU & SÉCURITÉ, sélectionnez les paires de clés
  4. Sélectionnez Créer une nouvelle paire de clés, saisissez le nom de la clé et cliquez sur créer. La clé sera automatiquement téléchargée sur votre système.

Étapes pour attacher la paire de clés créée à l'environnement Elastic Beanstalk

  1. AWS -> Services -> Elastic Beanstalk

  2. Sélectionnez votre environnement et cliquez sur la configuration à gauche.

  3. Dans Présentation de la configuration, sélectionnez Modifier dans Sécurité.

  4. Sous Autorisations de la machine virtuelle, sélectionnez la paire de clés que nous avons créée.

  5. Cliquez sur enregistrer puis sur enregistrer la configuration.

Cela prendra un certain temps à réfléchir à votre instance EC2.

chanth30
la source
3

Vous devez vous connecter directement à l'instance ec2 à l'aide de son adresse IP publique. Vous ne pouvez pas vous connecter à l'aide de l'URL élastiquebeanstalk.

Vous pouvez trouver l'adresse IP de l'instance en la recherchant dans la console ec2.

Vous devez également vous assurer que le port 22 est ouvert. Par défaut, l'interface de ligne de commande EB ferme le port 22 une fois la connexion ssh terminée. Vous pouvez appeler eb ssh -o pour garder le port ouvert une fois la session ssh terminée.

Avertissement: Vous devez savoir que le beanstalk élastique peut remplacer votre instance à tout moment. L'état n'est garanti sur aucune de vos instances de haricot élastique. Il est probablement préférable d'utiliser ssh uniquement à des fins de test et de débogage, car tout ce que vous modifiez peut disparaître à tout moment.

Siddharth Sharma
la source
2

La direction pour définir la paire de clés pour une instance ElasticBeanstalk ec2 avec l'interface utilisateur actuelle est: Avertissement: Cela nécessitera une mise à jour des instances EC2 dans votre application ElasticBeanstalk. Remarque: Vous devez avoir créé une paire de clés dans le tableau de bord EC2 avant cela.

1) Dans AWS Dashboard, sélectionnez le service ElasticBeanstalk 2) Sélectionnez l'application que vous souhaitez utiliser. 3) Sélectionnez «Configuration» 4) Sélectionnez l'icône d'engrenage (paramètres) dans la boîte de configuration «Instances». 5) Cela vous amènera à une page intitulée «Serveur», où vous pouvez mettre à jour le champ déroulant «Paire de clés EC2» avec votre paire de clés souhaitée et sélectionner «Enregistrer».

Une chose à noter est que cela peut ne pas fonctionner pour les applications avec plusieurs instances (mais je pense que c'est probable si elles sont toutes dans la même région que la paire de clés).

adamjk
la source
1

Je suis venu ici à la recherche d'un moyen d'ajouter une clé à une instance créée par Beanstalk pendant l'approvisionnement (nous utilisons Terraform). Vous pouvez effectuer les opérations suivantes dans Terraform:

resource "aws_elastic_beanstalk_environment" "your-beanstalk" {
   ... 
   setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name      = "EC2KeyName"
      value     = "${aws_key_pair.your-ssh-key.key_name}"
   }
   ...
}

Vous pouvez ensuite utiliser cette clé pour SSH dans la boîte.

Maikon
la source
1

Si vous avez configuré la CLI à l'aide eb initde votre environnement, cela devrait être aussi simple que

eb ssh --setup qui vous permettra de créer une nouvelle paire de clés ou d'en utiliser une existante s'il en existe une.

Vous pouvez également être en mesure de simplement vous connecter à l'environnement existant, eb usemême si je ne l'ai pas fait.

Pour plus de détails sur l'installation de la CLI - https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install

Andrew Waites
la source
1

Sur mac, vous pouvez installer le cli en utilisant brew:

brew install awsebcli

Avec l'outil de ligne de commande, vous pouvez ensuite utiliser ssh avec:

eb ssh environment-name

et aussi faire d'autres opérations. Cela suppose que vous avez ajouté un groupe de sécurité qui autorise ssh à partir de votre IP.

FabricioG
la source
0

En fonction de la configuration de votre environnement, il se peut que vous ne disposiez pas d'une adresse IP publique sur l'instance EC2 qui a été créée pour votre environnement. Vous pouvez vérifier par:

  1. Accédez à la console EC2
  2. Recherchez votre instance et vérifiez l' onglet Description
  3. S'il n'y a pas d'adresse IP publique ...
  4. Cliquez sur Elastic IPs sur la navigation
  5. Cliquez sur Attribuer une nouvelle adresse
  6. Choisissez Amazon pour la piscine
  7. Cliquez sur Allouer

Enfin, sélectionnez votre nouveau EIP et choisissez Adresse d'associé dans le menu d'action. Associez cette IP à votre instance EC2. Vous devriez pouvoir vous connecter en utilisant eb sshmaintenant.

Vous pouvez réinitialiser les détails de la connexion en exécutant eb ssh --setup.

Matthew Carriere
la source
-5

J'ai également rencontré le même problème il y a quelque temps. Je voulais utiliser le fichier de clé, mais Amazon dit quelque part que vous ne pouvez pas ajouter de fichier de clé à un serveur EC2 existant. Pour la première application Beanstalk, Amazon préconfigure l'application pour vous. Vous devez créer une nouvelle application et vous pouvez configurer le serveur EC2 qui exécute l'application Beanstalk pour utiliser un ancien fichier pem (ppk si vous utilisez Putty), ou vous pouvez en créer un nouveau. Vous devriez maintenant pouvoir SSH.

entrez la description de l'image ici

Ensuite, configurez, puis supprimez votre ancienne application.

ashraj98
la source
3
C'est faux. Vous POUVEZ ajouter un fichier de clés à une application Beanstalk existante. Il se tuera / se reconstruira. Vous n'avez pas besoin de supprimer / créer des applications vous-même.
Nate