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

104

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

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

мин да
источник
3
Вам следует попробовать serverfault.com, поскольку это не совсем вопрос программирования.
rwilliams
Брандмауэр? SSH прослушивает этот порт?
OMG Ponies
1
Сохранится ли проблема, если вы запустите другой экземпляр? (Также может быть полезно узнать больше о вашей настройке.) Я обновил свой ответ.
Jonik
сначала проверьте DNS. В случае неудачи настройте правила для входящих / исходящих сообщений в мастере запуска. настроить ВСЕ трафик и ВСЕ протокол и просто сохранить с параметрами по умолчанию. Снова пингуйте с вашей локальной системой, и тогда все должно работать.
Maiden

Ответы:

67

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

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

Йоник
источник
Вот то же самое в FAQ по EC2: developer.amazonwebservices.com/connect/… (Кроме того ec2-authorize, вы можете использовать расширение Elasticfox Firefox для легкой настройки групп.)
Джоник,
1
Боже мой ... открытие порта SSH в группе настолько простое, что не могу поверить, что его здесь нет: alestic.com/2009/08/ec2-connectivity . Спасибо, что указали на это.
mtyson 05
ох, совсем забыл про группу безопасности! Спасибо!
Антонио Бено
92

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

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

ted.strauss
источник
6
После того, как вы нажмете кнопку «добавить правило», вам также необходимо нажать «применить изменение правила», чтобы оно вступило в силу. Не забывай об этом. Это меня несколько раз сбивало с толку.
ted.strauss
Большое спасибо за это!
Hego555
Отличный ответ! Я больше не боюсь быть взломанным: D
softvar
2
это сработало для меня, спасибо !! По какой-то причине ... мой IP-адрес изменился, и внезапно я не смог подключиться к моему экземпляру ec2 по ssh. Я просто добавил правило, и вместо того, чтобы указывать «собственный» IP-адрес, я просто выбрал «мой IP» и wala ... Я смог войти по ssh!
rikkitikkitumbo
Хороший ответ! Я считаю, что это устранение неполадок с помощью AWS также очень полезно, и оно содержит пункт, предложенный здесь выше.
J0ANMM
28

Разрушай и создавай заново

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

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

  • Создать 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

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

Предложение

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

Бруно Броноски
источник
6
это действительно помогло мне! У меня был случай, когда моя таблица маршрутизации не указывала на интернет-шлюз, и это была единственная проблема.
EdgeCaseBerg
Честно говоря, я документирую эти вещи на SO и в github / gists, потому что знаю, что буду пинать себя, когда мне нужно будет сделать это снова через 2 месяца. Я надеюсь, что это поможет и другим. Но в конечном итоге я просто эгоистичная катастрофа. Спасибо, что нашли время прокомментировать, @EdgeCaseBerg.
Бруно Броноски
2
Большое спасибо @BrunoBronosky. Точно, если эта штука с «Интернет-шлюзом» так необходима, почему в стандартной документации AWS об этом не упоминается? :(
Ананд
1
@BrunoBronosky спасибо! Именно это мешало мне подключиться к экземпляру. Я сохраню эти шаги для будущего меня.
saiyancoder
21

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

dslosky
источник
Час на устранение моих проблем с тайм-аутом, и это было решением. Спасибо :)
Эрик Д. Браун
2
Большое спасибо @dslosky, что спас мне жизнь. :)
A_01
13

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

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

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

Когда время ожидания истекает или происходит сбой, проверьте следующее:

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

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

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

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

Эластичный IP

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

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

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

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

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

AJcodez
источник
1
Спасибо за это, я всегда забываю добавить 0.0.0.0/0 к цели интернет-шлюза, когда создаю новый VPC
Chathushka
7

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

gareth_bowles
источник
3

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

ЧЕРЕЗ 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-АДРЕСОВ введите описание изображения здесь

ТАК ПОЛНОСТЬЮ ДОСТУПНЫЕ ЗАПИСИ - РЕКОМЕНДУЕТСЯ введите описание изображения здесь

ЭТО ИСПОЛЬЗУЮ В ПРОИЗВОДСТВЕ введите описание изображения здесь

виджей
источник
2

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

  • Наиболее вероятным является то, что группа безопасности не настроена должным образом для предоставления SSH-доступа через порт 22 к вашему IP-адресу. Изменение настроек безопасности не требует перезапуска сервера, чтобы они вступили в силу, но необходимо подождать несколько минут, чтобы это стало возможным. применимо.

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

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

прадош наир
источник
В моем случае это была проблема с брандмауэром в сети, в которой я работаю. Использование VPN для обхода сработало.
Mave
1

Ознакомьтесь с этой справочной страницей в документации AWS:

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

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

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

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

  • На панели навигации выберите Подсети, а затем выберите свою подсеть.

  • На вкладке Route Table убедитесь, что существует маршрут с 0.0.0.0/0 в качестве пункта назначения и интернет-шлюз для вашего VPC в качестве цели. В противном случае выберите идентификатор таблицы маршрутов (rtb-xxxxxxxx), чтобы перейти на вкладку Routes для таблицы маршрутов, выберите Edit, Add another route, введите 0.0.0.0/0 в Destination, выберите свой интернет-шлюз в Target, а затем выберите Сохранить.

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

Мельцер
источник
1

Моя проблема - у меня был открыт порт 22 для «Мой IP-адрес», и я изменил подключение к Интернету и вызвал изменение IP-адреса. Так что пришлось поменять обратно.

smDev
источник
1

Основываясь на @ted.straussответе, вы можете выбрать SSHи MyIPв раскрывающемся меню вместо перехода на сторонний сайт.

Адам Дж. Грэмлинг
источник
1

Просто перезагрузите экземпляр Ec2 после применения правил.

Шаз
источник
1

Разрешите ssh и порт 22 из ufw, затем включите его и проверьте с помощью команды status

sudo ufw allow ssh
sudo ufw allow 22
sudo ufw enable
sudo ufw status
Джаганнатх Сварнкар
источник
0

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

Л.А. Фергюсон
источник
0

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

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

Яхья
источник
0

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

Бхарат Рам
источник
0

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

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

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

  1. На панели управления VPC найдите использованный идентификатор подсети, который привязан к вашему 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.

Kenorb
источник
0

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

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

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

Я исправил это, выполнив:

sudo su

service httpd restart

Гас
источник
0

У меня была такая же проблема, и я решил ее, добавив правило в группы безопасности.

Входящий SSH 0.0.0.0/0

Или вы можете добавить только свой IP-адрес

Маджали
источник
0

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

t_sologub
источник
0

Я работал над экземпляром, и все было нормально, уже на следующий день, когда я попытался подключиться к своему экземпляру по SSH, он сказал: «Тайм-аут соединения».

Я пытался просмотреть этот пост, но ничего не помогло. Так я и сделал -

В Edit inbound rulesстолбце из источника выберите, MY IPи он автоматически заполнит ваш общедоступный IP-адрес в формате CIDR (XXX.XXX.XXX.XX/32 ).

Я попытался ответить на @ ted.strauss, указав локальный IP-адрес, но в моем случае это не помогло. Я выбрал МОЙ IP-адрес, и это сработало.

Надеюсь, это кому-то поможет!

рбашиш
источник
0

сначала проверьте DNS. В случае неудачи настройте правила для входящих / исходящих сообщений в мастере запуска. настроить ВСЕ трафик и ВСЕ протокол и просто сохранить с параметрами по умолчанию. Пинг снова с вашей локальной системой, а затем должен работать

Дева
источник
0

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

Хосе Дель Валле
источник