SSH для Elastic Beanstalk


304

Я щойно підписався на нову пропозицію Elastic Beanstalk від Amazon. Я не можу зрозуміти, як SSH в екземпляр Beanstalk. У мене немає приватного ключа, оскільки Beanstalk створив екземпляр від мого імені.


Отже, як тільки я нарешті входжу в систему, як мені дістатися до папки, куди я натискаю на своє репо?
Еволюція

Здається, відповіді вище дещо датуються. В Amazon є хороший документ про те, як це зробити зараз. Дотримуйтесь наведених вище пропозицій щодо створення пари ключів. Тоді дотримуйтесь цього: <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/… Удачі!
Джордан Майкл Рушін

4
Ну, якщо ви використовуєте нову eb ssh
версію

Відповіді:


491

Я виявив це двоетапний процес. Це передбачає, що ви вже налаштували ключ для доступу до екземплярів EC2 у відповідному регіоні.

Налаштування групи безпеки

  1. На консолі AWS відкрийте вкладку EC2.
  2. Виберіть відповідний регіон та натисніть на «Група безпеки».
  3. У вас повинна бути elasticbeanstalk-defaultгрупа безпеки, якщо ви запустили екземпляр Elastic Beanstalk у цьому регіоні.
  4. Відредагуйте групу безпеки, щоб додати правило для доступу до SSH. Нижче буде заблоковано його, щоб дозволити вхід лише з певної IP-адреси.

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Налаштуйте середовище програми Elastic Beanstalk

  1. Якщо ви ще не створили пару ключів, зробіть її, натиснувши Ключові пари нижче Групи безпеки на вкладці ec2.
  2. На консолі AWS відкрийте вкладку Elastic Beanstalk.
  3. Виберіть відповідний регіон.
  4. Виберіть відповідне середовище
  5. Виберіть Конфігурації на лівій панелі.
  6. Виберіть Захист.
  7. У розділі "Пара ключів EC2:" виберіть в полі назву вашої клавіші Existing Key Pair.

Після відновлення екземпляра вам потрібно отримати ім'я хоста на вкладці "Екземпляри екземплярів консолі AWS EC2" або через API. Тоді ви маєте змогу ssh на сервер.

$ ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com

Примітка. Для додавання ключа в конфігурацію середовища захист припинення екземплярів повинен бути вимкнено, оскільки Beanstalk намагатиметься скасувати поточні екземпляри та запустити нові екземпляри за допомогою KeyPair.

Примітка. Якщо щось не працює, перевірте вкладку «Події» в додатку / середовища Beanstalk і з’ясуйте, що пішло не так.


41
Ця відповідь має в 2 рази більше голосів, ніж будь-яка інша відповідь; технічно суворий; і надзвичайно чіткий. Що з цим не так? Чому його не прийнято?

6
Якщо ви отримуєте помилку "Дозвіл відмовлено (publickey)", навіть якщо ви дотримувались інструкцій, наведених вище, наступне може пояснити, чому: Якщо ваша установка EB запускає більше одного екземпляра EC2, ви повинні перевірити, з яким із них пов’язана пара ключів. це. SSH до екземпляра можна отримати лише за допомогою пари ключів. Ви можете перевірити властивості в меню екземплярів EC2, щоб дізнатися це.
Запитаний Аронсон

27
Тут може змінитися інтерфейс. Для мене кроки 4 та 5 у другому розділі були дещо іншими. Мені довелося вибрати відповідне середовище, щоб відкрити панель приладів, а потім вибрати "Конфігурація" зліва. Клацніть значок шестірні налаштувань поруч із пунктом "Екземпляри", який відкриває сторінку налаштувань сервера. Мені вдалося вибрати клавішу EC2 зі спадного меню, що було зручно. Дякую за чудову відповідь, хоча!
Даллін

12
Для команди ssh вам потрібно буде вказати файл приватного ключа (.pem) та ім’я користувача @ public_dns_name (не відкритий ключ, як передбачає відповідь з розширенням .pub). Для Amazon Linux за замовчуванням ім'я користувача - ec2-користувач. Для RHEL5 ім'я користувача часто є кореневим, але може бути користувачем ec2. Для Ubuntu ім'я користувача - ubuntu. Для SUSE Linux ім'я користувача є root. В іншому випадку зверніться до свого постачальника послуг AMI. (кредит: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc

5
Цей параметр перемістився на вкладку "Безпека" у розділі "Конфігурації" (тому на кроці 6 виберіть "Безпека" замість "Екземпляри")
delucasvb

128

Тепер еластичний beanstalk CLI v3 підтримує прямий SSH з командою eb ssh. Напр

eb ssh your-environment-name

Немає потреби у створенні груп безпеки з пошуку адреси екземпляра EC2.

Є також цей крутий трюк:

eb ssh --force

Це тимчасово змусить порт 22 відкрити до 0,0.0.0 і триматиме його відкритим доти exit. Це поєднує трохи переваг верхньої відповіді, без клопоту. Ви можете тимчасово надати іншому, крім вас, доступ для налагодження та чогось іншого. Звичайно, вам все одно потрібно буде завантажити їх відкритий ключ до хоста, щоб вони мали доступ. Як тільки ви це зробите (і поки ви всередині eb ssh), інша людина може

ssh ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com

2
Я щойно встановив CLI v3 сам, і він прекрасно працює. Просто додати, ви можете вказати середу, приєднуючи його до команди, наприклад, eb ssh production. Ви також можете налаштувати конкретне середовище за допомогою параметра настройки:eb ssh production --setup
jmera

Хм, ні, для цього потрібно мати приватний ключ вже у своєму ~ / .ssh dir. У деяких людей є, у інших - ні. Якщо ви цього не зробите, вам все одно доведеться створити і завантажити його та встановити його в EB.
Хорхе Орпінель

49

Мій досвід в серпні 2013 року з клієнтом Linux та простою установкою AWS Beanstalk (один екземпляр EC2) такий (на основі спільноти Wiki Wiki)

Налаштування групи безпеки

  1. На консолі AWS виберіть EC2, щоб перейти до панелі керування EC2
  2. Відкрийте для себе групу безпеки, до якої належить ваш екземпляр EC2, натиснувши "Екземпляри" на панелі ліворуч, а потім виберіть екземпляр, до якого ви хочете підключитися (у моєму випадку існує лише один - "Навколишнє середовище за замовчуванням"). Деталі відображаються внизу сторінки - Ви повинні побачити поле для груп безпеки - занотуйте назву - в моєму випадку "awsweb ...".
  3. На панелі ліворуч виберіть Групи безпеки.
  4. Виберіть awsweb...групу безпеки, і деталі повинні відображатися в основі сторінки
  5. Перейдіть на вкладку Вхідні дані та оберіть SSH у спадному меню "Створити нове правило". Вставте ip-адресу / CIDR локальної машини (з якою ви збираєтесь підключитися), наприклад, 192.168.0.12/32 та натисніть кнопку Додати правило та застосувати зміни правил.

Створіть пара публічно-приватних ключів

  1. На інформаційній панелі EC2 виберіть Key Pairs на панелі ліворуч
  2. Клацніть Key Key Pair (вгорі) і введіть таке ім’я, як myname-key-pair-myregion або будь-яке дійсне ім'я ключа.
  3. Підтвердьте, а потім прийміть завантаження приватного ключа з браузера, зберігаючи його, наприклад, у домашній каталог або де завгодно. Переконайтеся, що каталог містить лише дозволи на запис.

Пов’яжіть пару публічно-приватних ключів із сервером Elastic Beanstalk EC2

  1. Щоб додати пару публічно-приватних ключів до екземпляра Elastic Beanstalk EC2, виконайте: Сервіси -> Elastic Beanstalk -> Моє додаток -> Середовище за замовчуванням переведе вас у середовище за замовчуванням (ту, де ви завантажуєте додаток)
  2. Клацніть конфігурація (на панелі ліворуч), а потім на шестірню / гвинтик, пов’язаний із "екземплярами"
  3. Відобразиться сторінка під назвою "Сервер"
  4. Виберіть номери попередньо вбудованих клавіш із клавіш EC2 Key і виконайте Зберегти
  5. Відобразиться деяке попереджувальне повідомлення, тому збережіть ще раз.

Підключіться до екземпляра AWS EC2 за допомогою SSH

  1. У термінальному сеансі перейдіть до каталогу, що містить ваш приватний ключ (.pem файл).
  2. Якщо у вас було кілька справ, ви, мабуть, зробите щось щодо .ssh / known_hosts, якщо у вас є такий, як перейменування. Інакше ви можете отримати помилку щодо зміни особи, яка змінюється.
  3. Зробіть: ssh -i ./myname-key-pair-my-region.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com

Удачі


3
Для команди ssh вам потрібно буде вказати файл приватного ключа (.pem) та ім’я користувача_імен @ public_dns_name. Для Amazon Linux за замовчуванням ім'я користувача - ec2-користувач. Для RHEL5 ім'я користувача часто є кореневим, але може бути користувачем ec2. Для Ubuntu ім'я користувача - ubuntu. Для SUSE Linux ім'я користувача є root. В іншому випадку зверніться до свого постачальника послуг AMI. (кредит: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc

Це питання є найкращим поясненням для додавання ключової пари. Але мені сподобалось використовувати eb-cli для SSH частини, оскільки це простіше. Тим не менш, я також підтримав цю.
Нік

35

Я теж грав із цим.

  1. перейти на вкладку служби пружної серветки
  2. на огляді програми перейдіть до дії -> редагування конфігурації
  3. додайте назву ключа, як це відображається на вкладці EC2 (для того ж регіону), до наявного вікна клавіатури та натисніть кнопку застосувати зміни

Сервіс буде відновлено, тому приготуйте каву протягом 5 хвилин

На вкладці ec2 для того ж регіону ви побачите ваш новий запущений екземпляр. ssh для загальнодоступного імені dns як ec2-користувача, використовуючи ключ, доданий у 3, наприклад ssh ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com


5
Додавання частини "ec2-user" була моєю проблемою ... Це слід об'єднати з відповіддю вище;).
Кіріл Фукс

30

У меню "Instance Actions" для екземпляра EC2 є зручна опція "Connect". Це дасть вам точну команду SSH для виконання з правильним URL для екземпляра. Загальні вказівки Джаблі є правильними.


24

Вище відповіді трохи старі.

Спочатку створіть пару ключів, а потім приєднайте її до середовища Elastic Beanstalk.

Крок для створення пари ключів

  1. Вхід до AWS
  2. Послуги -> EC2
  3. Ліворуч під МЕРЕЖЕЮ ТА БЕЗПЕКА виберіть пари клавіш
  4. Виберіть Створити нову пару клавіш, введіть ім'я ключа та натисніть кнопку створити. Ключ буде автоматично завантажений у вашу систему.

Етапи приєднання створеної пари ключів до середовища Elastic Beanstalk

  1. AWS -> Послуги -> Elastic Beanstalk

  2. Виберіть середовище та натисніть на конфігурацію зліва.

  3. У огляді конфігурації виберіть модифікувати за допомогою Security.

  4. У розділі Дозволи для віртуальної машини виберіть пару ключів, яку ми створили.

  5. Клацніть на зберегти, а потім на конфігурацію збереження.

Це займе певний час, щоб відобразити ваш екземпляр EC2.



3

Вам потрібно підключитися до екземпляру ec2 безпосередньо за допомогою його загальнодоступної ip-адреси. Ви не можете підключитися за допомогою URL-адреси гумкого ключа.

Ви можете знайти ip адресу екземпляра, переглянувши його в консолі ec2.

Вам також потрібно переконатися, що порт 22 відкритий. За замовчуванням EB CLI закриває порт 22 після завершення ssh-з'єднання. Ви можете зателефонувати eb ssh -o, щоб порт був відкритим після завершення сеансу ssh.

Попередження: Ви повинні знати, що еластична пасточка може замінити ваш примірник у будь-який час. Держава не гарантується в жодному з ваших еластичних екземплярів. Напевно, краще використовувати ssh лише для тестування та налагодження, оскільки все, що ви змінили, може піти в будь-який час.


2

Напрямок для встановлення пари ключів для екземпляра ElasticBeanstalk ec2 з поточним користувальницьким інтерфейсом є: Попередження: Для цього знадобиться оновлення екземплярів EC2 у вашому додатку ElasticBeanstalk. Примітка: Вам потрібно буде створити пару ключів на інформаційній панелі EC2 до цього.

1) На інформаційній панелі AWS виберіть службу ElasticBeanstalk 2) Виберіть додаток, яке ви хочете використовувати. 3) Виберіть "Конфігурація" 4) Виберіть піктограму передач (налаштувань) у вікні налаштування "Екземпляри". 5) Це перенесе вас на сторінку під назвою "Сервер", де ви можете оновити спадне поле "Пара клавіш EC2" за допомогою потрібної пари ключів і вибрати "Зберегти".

Варто зазначити, що це може не працювати для Прикладних програм з кількома екземплярами (але я вважаю, що це, ймовірно, якщо вони знаходяться в одному регіоні, як пара ключів).


1

Я прийшов сюди, шукаючи спосіб додати ключ до екземпляра, який Beanstalk створює під час надання (ми використовуємо Terraform). У Terraform можна зробити наступне:

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

Потім ви можете використовувати цей ключ для SSH у вікні.


1

Якщо ви створили CLI за допомогою eb init для свого оточення, він повинен бути настільки ж простим

eb ssh --setup що дозволить вам створити нову пару ключів або використовувати існуючу, якщо така існує.

Ви також можете просто підключитися до наявного середовища eb use хоча я цього не робив.

Детальніше про встановлення CLI - https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install


1

На mac ви можете встановити кліп за допомогою brew:

brew install awsebcli

За допомогою інструменту командного рядка ви можете сша з:

eb ssh environment-name

а також робити інші операції. Це передбачає, що ви додали групу безпеки, яка дозволяє ssh з вашого ip.


0

Залежно від конфігурації оточуючого середовища, можливо, у вас не буде публічної IP-адреси на екземплярі EC2, створеному для вашого середовища. Ви можете перевірити:

  1. Перейдіть на консоль EC2
  2. Знайдіть свій примірник і перевірте вкладку Опис
  3. Якщо немає публічного IP ...
  4. Натисніть Еластичні IP-адреси на навігації
  5. Клацніть Виділити нову адресу
  6. Виберіть Амазонку для басейну
  7. Клацніть Виділити

Нарешті, виберіть свій новий EIP і виберіть в меню дій дії Асоційована адреса . Пов’яжіть цей IP з вашим екземпляром EC2. Ви повинні мати можливість підключитися за допомогоюeb ssh зараз.

Ви можете скинути дані про з'єднання, запустивши eb ssh --setup.


-5

Я також стикався з тією ж проблемою деякий час тому. Я хотів скористатися файлом ключа, але Amazon десь каже, що ви не можете додати файл ключа до існуючого EC2-сервера. Для першої програми Beanstalk Amazon попередньо конфігурує програму для вас. Вам потрібно створити нову програму, і ви можете налаштувати EC2-сервер, на якому працює програма Beanstalk, для використання старого файлу pem (ppk, якщо використовується Putty), або ви можете створити новий. Тепер ви повинні мати можливість SSH.

введіть тут опис зображення

Потім налаштуйте, а потім видаліть старий додаток.


3
Це неправильно. Ви МОЖЕТЕ додати файл файлів ключів до наявного додатку з ключем Це вб'є / відновить себе. Вам не потрібно видаляти / створювати програми самостійно.
Нейт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.