Вопрос или проблема
Я не могу подключиться к экземпляру вычислений в GCP ни через веб, ни по SSH. Я пытаюсь подключиться, но получаю следующую ошибку:
Не удается подключиться к ВМ по порту 22. Узнайте больше о возможных причинах этой проблемы.
Я также пытаюсь подключиться через последовательную консоль, но у меня нет учетных данных по умолчанию для экземпляра. Я знаю, что могу добавить пользователей через userdata, но это производственные экземпляры, и я не могу перезагрузить их… Я не знаю, что происходит, потому что у меня есть другой проект с такой же конфигурацией, тем же cloud-init, и я могу подключиться по SSH к нему..
Есть ли какое-то решение?
Если у вашей ВМ нет внешнего IP-адреса, то подключение по SSH к ВМ происходит через AdminProxy, что требует настройки правила брандмауэра для разрешения диапазона IP-прокси.
Чтобы проверить, настроен ли у вас этот диапазон в брандмауэре, вы можете перейти в Безопасность -> Identity Aware Proxy -> SSH и TCP ресурсы, найти ВМ и посмотреть на Ошибку, чтобы увидеть более подробную информацию о том, что необходимо настроить.
Вы можете воспользоваться ссылками ниже для получения дополнительной информации о правилах брандмауэра в GCP.
https://cloud.google.com/vpc/docs/firewalls
https://cloud.google.com/appengine/docs/standard/java/creating-firewalls
https://cloud.google.com/appengine/docs/flexible/java/creating-firewalls
Ответ или решение
Если вы сталкиваетесь с проблемой подключения к вашим экземплярам Compute Engine в Google Cloud Platform (GCP) по SSH и получаете сообщение об ошибке "We are unable to connect to the VM on port 22", это может быть вызвано несколькими факторами. В данном ответе мы подробно рассмотрим возможные причины возникшей проблемы и предложим пути её решения.
Возможные причины проблемы с подключением по SSH
-
Отсутствие внешнего IP-адреса:
Если ваш экземпляр не имеет внешнего IP-адреса, необходимо использовать сервис AdminProxy для SSH-подключения. Это требует настройки соответствующего правила брандмауэра, чтобы разрешить IP-адреса прокси. -
Настройки брандмауэра:
Для успешного подключения необходимо убедиться, что ваши правила брандмауэра позволяют трафик на порт 22 (SSH). Если брандмауэр вашего проекта не настроен должным образом, это может блокировать соединения. -
Неверные учетные данные:
Если вы используете сериализацию для доступа к экземпляру и не имеете стандартных учетных данных, это может также стать причиной проблемы. В такой ситуации необходимо обновить настройки пользователя через скрипты инициализации. -
Конфликты с другими конфигурациями:
Возможно, в вашем проекте существуют конфликты конфигурации между различными экземплярами. Проверьте, имеются ли какие-либо специфические настройки, отличающие проблемные экземпляры от работающих.
Решения проблемы
-
Проверка внешнего IP-адреса:
Убедитесь, что экземпляр имеет внешний IP-адрес. Если это не так, настройте правило брандмауэра для разрешения SSH-доступа через AdminProxy. Для этого:- Перейдите в раздел Безопасность -> Identity Aware Proxy.
- Найдите ваш экземпляр и проверьте наличие ошибок.
- Настройте правила, позволяющие трафик с IP-адресов прокси.
-
Настройка правил брандмауэра:
Если ваш экземпляр имеет внешний IP-адрес, проверьте настройки брандмауэра:- Зайдите в консоль GCP.
- Перейдите в раздел VPC -> Правила брандмауэра.
- Убедитесь, что есть правило, позволяющее входящие соединения на порт 22 для вашего экземпляра. Если нет, создайте новое правило.
-
Использование пользовательских скриптов инициализации:
Если ни один из вышеперечисленных методов не подходит, и вы не хотите перезагружать производственные экземпляры, рассмотрите возможность использования пользовательских скриптов инициализации при создании новых экземпляров или изменении существующих. Это может помочь в создании нужных пользователей с доступом по SSH. -
Обращение в службу поддержки GCP:
В случае, если проблема не разрешается, рекомендуем обратиться в техническую поддержку GCP. Они смогут провести более глубокий анализ конфигураций вашего проекта и эффективности доступа.
Заключение
Проблема с доступом к вашим экземплярам Compute Engine через SSH может быть вызвана несколькими факторами. Убедитесь, что все настройки брандмауэра правильны и что ваши экземпляры правильно конфигурированы для SSH-доступа. Следуя вышеописанным рекомендациям, вы сможете диагностировать и устранить проблему с подключением. Успехов в использовании Google Cloud Platform!