SSH к экземпляру Elastic Beanstalk

304

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

Бенно Вальдман
источник
Итак, когда я наконец-то вошел в систему, как мне попасть в папку, куда я помещаю свое git-репо?
Эволюция
Кажется, ответы выше несколько устарели. У Amazon есть хороший документ о том, как это сделать сейчас. Следуйте приведенным выше советам о том, как создать пару ключей. Затем выполните следующее: <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/… Удачи!
Джордан Майкл Рашинг
4
Что ж, если вы используете новый v3 ELB CLI, вы можете это сделатьeb ssh
Sharoon Thomas

Ответы:

492

Я обнаружил, что это двухэтапный процесс. Это предполагает, что вы уже настроили пару ключей для доступа к экземплярам 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 Console EC2 или через API. После этого вы сможете использовать ssh на сервере.

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

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

Примечание. Если что-то не работает, откройте вкладку «События» в приложении / среде Beanstalk и выясните, что пошло не так.

jabley
источник
41
Этот ответ имеет в 2 раза больше голосов, чем любой другой ответ; технически строгий; и предельно ясно. Что с этим не так? Почему это не принято?
6
Если вы получили сообщение об ошибке «Отказано в доступе (publickey)», даже если вы выполнили приведенные выше инструкции, это может объяснить, почему: если ваша установка EB запускает более одного экземпляра EC2, вы должны проверить, какой из них получает пару ключей, связанную с Это. Вы можете только SSH к экземпляру с парой ключей. Вы можете проверить свойства в меню экземпляра EC2, чтобы выяснить это.
За Квестед Аронссон
27
Интерфейс мог измениться здесь. Для меня шаги 4 и 5 во втором разделе немного отличались. Мне пришлось выбрать соответствующее окружение, чтобы открыть панель управления, а затем выбрать «Конфигурация» слева. Нажмите значок шестеренки настроек рядом с «Экземпляры», чтобы открыть страницу настроек сервера. Мне удалось выбрать пару ключей EC2 из выпадающего списка, что было удобно. Спасибо за отличный ответ!
Даллин
12
Для команды ssh вы должны будете указать файл с закрытым ключом (.pem) и имя_пользователя @ public_dns_name (не открытый ключ, как подразумевает ответ в расширении .pub). Для Amazon Linux имя пользователя по умолчанию - ec2-user. Для RHEL5 имя пользователя часто является root, но может быть ec2-user. Для Ubuntu имя пользователя - Ubuntu. Для SUSE Linux имя пользователя - root. В противном случае уточните у своего поставщика AMI. ( Фото : docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
5
Этот параметр перемещен на вкладку «Безопасность» в разделе «Конфигурации» (поэтому на шаге 6 выберите «Безопасность» вместо «Экземпляры»)
delucasvb
128

Elastic 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
Tal
источник
2
Я только что установил CLI v3 сам, и он прекрасно работает. Просто добавить, вы можете указать среду, присоединяя его к команде, например, eb ssh production. Вы также можете настроить определенную среду с помощью параметра настройки:eb ssh production --setup
jmera
Хм, нет, для этого требуется, чтобы у вас уже был закрытый ключ в директории ~ / .ssh. У некоторых это есть, у некоторых нет. Если вы этого не сделаете, вам все равно придется создать и загрузить его и настроить в EB.
Хорхе Орпинел
49

Мой опыт работы в августе 2013 года с клиентом linux и простой установкой AWS Beanstalk (один экземпляр EC2) выглядит следующим образом (на основе Вики сообщества выше)

Настроить группу безопасности

  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 Pair (вверху) и введите имя, например myname-key-pair-myregion или любое другое действительное имя ключа, которое вам нравится.
  3. Подтвердите, а затем подтвердите загрузку закрытого ключа из браузера, сохранив его, например, в своем домашнем каталоге или в любом другом месте. Убедитесь, что каталог имеет только права на запись для вас.

Свяжите пару открытых личных ключей с сервером Elastic Beanstalk EC2

  1. Чтобы добавить пару открытый-закрытый ключ к экземпляру Elastic Beanstalk EC2, выполните следующие действия: Службы -> Elastic Beanstalk -> Мое приложение -> Среда по умолчанию, и вы перейдете в среду по умолчанию (ту, в которую вы загружаете свое приложение).
  2. Нажмите Конфигурация (на левой панели), а затем на шестерне / шестерне, связанной с «Экземплярами».
  3. Отображается страница под названием «Сервер»
  4. Выберите предварительно настроенный ключ из пары ключей EC2 и сохраните
  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

Удачи

mikemay
источник
3
Для команды ssh вам нужно указать файл с закрытым ключом (.pem) и имя_пользователя @ public_dns_name. Для Amazon Linux имя пользователя по умолчанию - ec2-user. Для RHEL5 имя пользователя часто является root, но может быть ec2-user. Для 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

В меню «Действия с экземпляром» имеется удобный параметр «Подключить» для экземпляра EC2. Это даст вам точную команду SSH для выполнения с правильным URL для экземпляра. Общие инструкции Jabley верны.

Питер
источник
24

Выше ответы немного староваты.

Сначала создайте пару ключей, а затем присоедините ее к среде Elastic Beanstalk.

Шаги для создания пары ключей

  1. Войти в AWS
  2. Услуги -> EC2
  3. В левой части под NETWORK & SECURITY выберите пары ключей
  4. Выберите «Создать новую пару ключей», введите имя ключа и нажмите «Создать». Ключ будет автоматически загружен в вашу систему.

Шаги для присоединения созданной пары ключей к среде Elastic Beanstalk

  1. AWS -> Услуги -> Эластичный бобовый стебель

  2. Выберите вашу среду и нажмите на конфигурацию слева.

  3. В обзоре конфигурации выберите «Изменить» в разделе «Безопасность».

  4. В разделе Разрешения виртуальной машины выберите созданную нами пару ключей.

  5. Нажмите на сохранить, а затем сохранить конфигурацию.

Это займет некоторое время, чтобы отразить ваш экземпляр EC2.

singh30
источник
3

Вам необходимо подключиться к экземпляру ec2 напрямую, используя его публичный IP-адрес. Вы не можете подключиться с помощью эластичного URL-адреса стебля.

Вы можете найти IP-адрес экземпляра, посмотрев его в консоли ec2.

Вы также должны убедиться, что порт 22 открыт. По умолчанию EB CLI закрывает порт 22 после завершения соединения ssh. Вы можете вызвать eb ssh -o, чтобы оставить порт открытым после завершения сеанса ssh.

Предупреждение: вы должны знать, что эластичный бобовый стебель может заменить ваш экземпляр в любое время. Состояние не гарантируется ни в одном из ваших случаев эластичного бобового стебля. Вероятно, лучше использовать ssh только для тестирования и отладки, поскольку все, что вы изменяете, может исчезнуть в любое время.

Сиддхарт Шарма
источник
2

Направление установки пары ключей для экземпляра ElasticBeanstalk ec2 с текущим пользовательским интерфейсом: Предупреждение: для этого потребуется обновить экземпляры EC2 в приложении ElasticBeanstalk. Примечание. Перед этим вам необходимо создать пару ключей на панели инструментов EC2.

1) В AWS Dashboard выберите сервис ElasticBeanstalk. 2) Выберите приложение, которое вы хотите использовать. 3) Выберите «Конфигурация». 4) Выберите значок шестеренки (настройки) в окне конфигурации «Экземпляры». 5) Откроется страница «Сервер», где вы можете обновить раскрывающееся поле «Пара ключей EC2», указав нужную пару ключей, и выбрать «Сохранить».

Следует отметить, что это может не работать для приложений с несколькими экземплярами (но я полагаю, что, скорее всего, они все находятся в одном регионе с парой ключей).

adamjk
источник
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 в поле.

Maikon
источник
1

Если вы настроили использование CLI eb initв своей среде, то это должно быть так же просто, как

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

Вы также можете просто подключиться к существующей среде, eb useхотя я этого еще не сделал.

Подробнее об установке интерфейса командной строки - https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install.

Эндрю Уэйтс
источник
1

На Mac вы можете установить Cli с помощью Brew:

brew install awsebcli

С помощью инструмента командной строки вы можете затем ssh:

eb ssh environment-name

а также делать другие операции. Это предполагает, что вы добавили группу безопасности, которая позволяет ssh с вашего ip.

FabricioG
источник
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.

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

Затем настройте, затем удалите старое приложение.

ashraj98
источник
3
Это не верно. Вы МОЖЕТЕ добавить ключевой файл в существующее приложение beanstalk. Это убьет / перестроит себя. Вам не нужно удалять / создавать приложения самостоятельно.
Нейт