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 и выясните, что пошло не так.


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

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

Удачи


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.



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», указав нужную пару ключей, и выбрать «Сохранить».

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


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хотя я этого еще не сделал.

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


1

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

brew install awsebcli

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

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
Это не верно. Вы МОЖЕТЕ добавить ключевой файл в существующее приложение beanstalk. Это убьет / перестроит себя. Вам не нужно удалять / создавать приложения самостоятельно.
— Нейт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.