Возможные причины таймаута при попытке доступа к экземпляру EC2


Я не могу SSH в мой экземпляр-время ожидания операции. Каковы могут быть причины, и что я могу сделать, чтобы решить эту проблему? Перезагрузка обычно занимает много времени, чтобы вступить в силу, и может просто сделать вещи хуже

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

17 77

17 ответов:

вы установили соответствующую группу безопасности для экземпляра? То есть тот, который позволяет получить доступ из вашей сети к порту 22 на экземпляре. (По умолчанию весь трафик запрещен.)

обновление: ок, не проблема группы безопасности. Но сохраняется ли проблема, если вы запускаете другой экземпляр из того же AMI и пытаетесь получить к нему доступ? Возможно, этот конкретный экземпляр EC2 просто случайно потерпел неудачу - это только вопрос времени, когда что-то подобное произойдет. (Рекомендуется читать: архитектура для облака: лучшие практики (PDF), документ Jinesh Varia, который является евангелистом веб-сервисов в Amazon. Особенно смотрите раздел "дизайн для отказа и ничего не выйдет из строя".)

У меня была та же проблема, и решение закончилось добавлением моего IP адрес локального компьютера в списке правил для входящих подключений в активной безопасности группа. В диалоговом окне входящий ниже введите 22 в диапазоне портов, ваш локальный IP / 32 в поле Источник и оставьте "пользовательское правило tcp" в раскрывающемся списке.

enter image description here

уничтожить и создать заново

у меня была одна зона доступности, где я мог подключиться, а другой, где я не мог. Через несколько часов я так расстроился, что удалил все в этой зоне доступности.

строительство все обратно я должен был убедиться, чтобы создать все. Это включало:

  • создать VPC
    • CIDR: 10.0.0.0/24
  • создать интернет Шлюз
  • прикрепить Интернет-Шлюз до VPC
  • создать Таблица Маршрутизации
  • добавить маршрут до Таблица Маршрутизации
    • Destination: 0.0.0.0/0
    • Target: <Internet Gateway from earlier>
  • создать подсети
    • CIDR: 10.0.0.0/24
    • Routing Table: <Routing Table from earlier

это заняло у меня много шарить чтобы получить все это. Я заказал шаги так, как я думаю, может быть наиболее эффективным, но вам, возможно, придется настроить их, чтобы получить один элемент для следующего.

предложение

Я не предлагаю вам перейти на термоядерный режим, как это сделал я. Я предлагаю всю эту информацию, чтобы вы могли проверить эти ассоциации, чтобы убедиться, что ваши подходят.

этот ответ для глупых людей (как я). Публичный DNS вашего EC2 может (будет) меняться при перезапуске. Если вы не осознаете этого и попытаетесь SSH в свой старый публичный DNS, соединение остановится и истечет время ожидания. Это может привести вас к предположению, что что-то не так с вашим EC2 или группой безопасности или... Нет, просто SSH в новый DNS. И обновите свой ~/.ssh/config файл, если нужно!

для подключения используйте ssh вот так:

ssh -i keyname.pem username@xxx.xx.xxx.xx

здесь keyname.pem - имя вашего закрытого ключа, username является правильным именем пользователя для вашего дистрибутива ОС, и xxx.xx.xxx.xx - это публичный IP-адрес.

когда он истекает или терпит неудачу, проверьте следующее:

Группа Безопасности

убедитесь, что у вас есть входящее правило для tcp порт 22 и либо все ips, либо ваш ip. Вы можете найти группу безопасности через меню ec2, в экземпляре опции.

Таблица Маршрутизации

для новой подсети в vpc необходимо перейти к таблице маршрутизации, которая указывает 0.0.0.0/0 к цели шлюза интернета. Когда вы создаете подсеть в своем vpc, по умолчанию она назначает таблицу маршрутизации по умолчанию, которая, вероятно, не принимает входящий трафик из интернета. Вы можете изменить параметры таблицы маршрутизации в меню vpc, а затем подсети.

эластичный IP

для экземпляра в vpc, вы нужно назначить публичный эластичный ip-адрес, и связать его с экземпляром. Частный ip-адрес не может быть доступен извне. Вы можете получить эластичный ip-адрес в меню ec2 (не меню экземпляра).

имя пользователя

убедитесь, что вы используете правильное имя пользователя. Он должен быть одним из ec2-user или root или ubuntu. Попробуйте их все, если это необходимо.

Закрытый Ключ

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

вы смотрели на вывод консоли из экземпляра ? Вы можете сделать это через консоль AWS (экземпляры - > щелкните правой кнопкой мыши на экземпляре - > получить системный журнал). У меня были случаи, когда сетевые службы на экземпляре EC2 не запускались правильно, что приводило к тайм-аутам SSH-соединений; перезапуск экземпляра обычно исправлял вещи.

возможны следующие проблемы:

  • наиболее вероятным является то, что группа безопасности не настроена должным образом для предоставления доступа SSH на порту 22 к вашему i.p. изменение настроек безопасности не требует перезагрузки сервера, чтобы он был эффективным, но нужно подождать несколько минут, чтобы он был применим.

  • конфигурация локального брандмауэра не позволяет SSH-доступ к серверу. ( вы можете попробовать другое подключение к интернету , ваш телефон / ключ, чтобы попробовать его)

  • сервер не запускается должным образом (тогда проверки доступа не удастся даже на консоли amazon), в этом случае вам нужно будет остановить и запустить сервер.

enter image description here

ЧЕРЕЗ 2 ЧАСА Я НАШЕЛ ЭТО

обратите внимание, что ssh ip 120.138.105.251/32

  • не является IP-адресом экземпляра aws

  • - Это не ваш локальный IP 127.0.0.1

  • - Это не ваш локальный IP localhost

НО НО НО

его код публичный IP-адрес вашего персональный компьютер из которого вы пытаетесь получить доступ к экземпляру aws

  1. перейти к https://www.whatismyip.com/ любой ip-адрес, введенный ssh

ЕСЛИ ВЫ ХОТИТЕ ПОЛНОСТЬЮ ОТКРЫТЬ SSH ДЛЯ ВСЕХ IP-АДРЕСОВ enter image description here

ВОТ КАК ВЫГЛЯДЯТ ПОЛНОСТЬЮ ДОСТУПНЫЕ ЗАПИСИ-BASIC RECOMEENDED enter image description here

ЭТО ТО, ЧТО Я ЕСТЬ ИСПОЛЬЗОВАНИЕ В ПРОИЗВОДСТВЕ enter image description here

еще одна возможность. Группы безопасности AWS настроены на работу только с определенными входящими ip-адресами. Если ваша группа безопасности настроена таким образом, вам (или владельцу учетной записи) необходимо будет добавить свой ip-адрес в группу безопасности. Для этого откройте панель мониторинга AWS, выберите группы безопасности, выберите группу безопасности и перейдите на вкладку входящие. Затем добавьте свой ip-адрес по мере необходимости.

У меня была та же проблема, и решение разрешало доступ из любого места к списку входящих правил в активной группе безопасности. В диалоговом окне входящий введите 22 в диапазоне портов,в любом месте в поле Источник и выберите " ssh " в раскрывающемся списке.

P. S: это может быть не рекомендуемое решение, поскольку это означает, что этот экземпляр может быть ssh'ED с любой машины, но я не мог заставить его работать с моим локальным IP.

У меня была аналогичная проблема, когда я использовал общественный Wi-Fi, у которого не было пароля. Переключение интернет-соединения на безопасное соединение действительно решило проблему.

Если SSH-доступ не работает для вашего экземпляра EC2, вам нужно проверить:

  • Группа Безопасности для вашего экземпляра позволяет входящий SSH access (Регистрация: правила).

Если вы используете экземпляр VPC (у вас VPC ID и идентификатор подсети прилагается к вашему экземпляру), проверьте:

  1. в панели мониторинга VPC найдите используемый идентификатор подсети, который прикреплен к вашему ВКК.
  2. проверить вложенным маршрута в таблице, который должен 0.0.0.0/0 Как пункт назначения и ваш Интернет-Шлюз в качестве мишени.

в Linux вы также можете проверить информацию о маршруте в Системный Журнал на сеть экземпляра, например:

++++++++++++++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++++++++++++++
+--------+------+------------------------------+---------------+-------+-------------------+
| Device |  Up  |           Address            |      Mask     | Scope |     Hw-Address    |
+--------+------+------------------------------+---------------+-------+-------------------+
|   lo   | True |          127.0.0.1           |   255.0.0.0   |   .   |         .         |
|  eth0  | True |         172.30.2.226         | 255.255.255.0 |   .   | 0a:70:f3:2f:82:23 |
+--------+------+------------------------------+---------------+-------+-------------------+
++++++++++++++++++++++++++++Route IPv4 info+++++++++++++++++++++++++++++
+-------+-------------+------------+---------------+-----------+-------+
| Route | Destination |  Gateway   |    Genmask    | Interface | Flags |
+-------+-------------+------------+---------------+-----------+-------+
|   0   |   0.0.0.0   | 172.30.2.1 |    0.0.0.0    |    eth0   |   UG  |
|   1   |   10.0.3.0  |  0.0.0.0   | 255.255.255.0 |   lxcbr0  |   U   |
|   2   |  172.30.2.0 |  0.0.0.0   | 255.255.255.0 |    eth0   |   U   |
+-------+-------------+------------+---------------+-----------+-------+

здесь UG флаги, показывающие ваш интернет-шлюз.

для получения более подробной информации, проверьте:Устранение неполадок при подключении к Ваш Экземпляр в Amazon docs.

проверьте эту страницу справки на AWS docs:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectionTimeout Вы, вероятно, найдете свое решение там. для меня эта часть сделала исправление:

[EC2-VPC] Проверьте таблицу маршрутов для подсети. Вам нужен маршрут, который отправляет весь трафик, предназначенный за пределами VPC, на интернет-шлюз для СИЗ.

  • откройте консоль Amazon VPC по адресу https://console.aws.amazon.com/vpc/.

  • в области навигации выберите интернет-шлюзы. Убедитесь, что к VPC подключен интернет-шлюз. В противном случае выберите Создать Интернет-шлюз и следуйте инструкциям, чтобы создать интернет шлюз, выберите интернет-шлюз, а затем выберите Подключить к VPC и следуйте инструкциям, чтобы прикрепить его к VPC.

  • в области переходов выберите подсети, а затем выберите свою подсеть.

  • на вкладке таблица маршрутов убедитесь, что существует маршрут с 0.0.0.0/0 в качестве пункта назначения и интернет-шлюз для вашего VPC в качестве цель. В противном случае выберите идентификатор таблицы маршрутов (rtb-xxxxxxxx), чтобы перейдите на вкладку маршруты для таблицы маршрутов, выберите Изменить, добавить другой маршрут, введите 0.0.0.0/0 в пункт назначения, выберите ваш интернет шлюз от цели, а затем выберите Сохранить.

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

моя проблема - у меня был порт 22 открыт для "моего IP" и изменил подключение к интернету и изменение IP-адреса. Так что пришлось менять его обратно.

чтобы включить ssh-доступ из интернета для экземпляров в подсети VPC, выполните следующие действия:

  • подключите интернет-шлюз к VPC.
  • убедитесь, что таблица маршрутов подсети указывает на интернет-шлюз.
  • убедитесь, что экземпляры в подсети имеют глобально уникальный IP-адрес (общедоступный IPv4-адрес, эластичный IP-адрес или IPv6-адрес).
  • убедитесь, что управление доступом к сети (на уровне VPC) и правила группы безопасности (на уровне уровень ec2) позволяет соответствующему трафику поступать в ваш экземпляр и из него. Убедитесь, что ваш сетевой публичный IP-адрес включен для обоих. По умолчанию сетевой AcL разрешает весь входящий и исходящий трафик, за исключением явно настроенных иначе

для меня это был сервер apache, размещенный на t2.экземпляр micro linux EC2, а не сам экземпляр EC2.

я исправил его:

sudo su

service httpd restart

здание с @ted.strauss's ответ, вы можете выбрать SSH и MyIP из выпадающего меню вместо перехода на сторонний сайт.