Ошибка gcloud: Проблемы с сетевым подключением могут быть связаны с настройками прокси или брандмауэра.

Вопрос или проблема

Я хочу открыть сессию SSH к моим GCP VM-инстанциям с помощью gcloud, но, похоже, у меня возникают проблемы из-за моего HTTP-прокси-сервера.
После установки google-cloud-sdk на Ubuntu я запустил
gcloud into --run-diagnostics, что завершилось с ошибкой

Проверка сетевого подключения...выполнено.
ОШИБКА: Проверка доступности не выполнена.
    Невозможно подключиться к https://www.google.com (SSLHandshakeError)
    Невозможно подключиться к https://accounts.google.com (SSLHandshakeError)
    Невозможно подключиться к https://dl.google.com/dl/cloudsdk/channels/rapid/components-2.json (SSLHandshakeError)
Проблемы с сетевым подключением могут быть связаны с настройками прокси или брандмауэра.

Я вижу, что у некоторых людей были подобные проблемы, и в качестве временного решения им нужно было добавить свой внутренний CA в файл cacerts.txt, предположительно в “`/usr/lib/google-cloud-sdk/lib/third_party/httplib2/python3/httplib2“

http_proxy установлен на мой прокси-сервер

>echo $http_proxy
http://proxy.server.domain.com:8080

Когда я запускаю эту команду gcloud info --run-diagnostics --verbosity=debug --log-http, я получаю ошибку

"error": {
    "code": 401,
    "message": "Запрос не содержит необходимого аутентификационного удостоверения. Ожидается OAuth 2 токен доступа, cookie для входа или другие действительные аутентификационные данные. См. https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }

Моя Ubuntu 18.04 работает в подсистеме Linux для Windows 10.

Вот полная информация о сессии:

>gcloud info --run-diagnostics --verbosity=debug --log-http
DEBUG: Запуск [gcloud.info] с аргументами: [--log-http: "true", --run-diagnostics: "True", --verbosity: "debug"]
Сетевые диагностики обнаруживают и исправляют локальные проблемы сетевого подключения.
Проверка сетевого подключения...=======================
==== начало запроса ====
uri: https://www.google.com
method: GET
== начало заголовков ==
user-agent: gcloud/242.0.0 command/gcloud.info invocation-id/eb1baa5e0f47440c8dc896aea08d15ff environment/None environment-version/None interactive/True from-script/False python/2.7.15rc1 term/xterm-256color (Linux 4.4.0-17134-Microsoft)
== конец заголовков ==
== начало тела ==

== конец тела ==
==== конец запроса ====
=======================
==== начало запроса ====
uri: https://accounts.google.com
method: GET
== начало заголовков ==
user-agent: gcloud/242.0.0 command/gcloud.info invocation-id/cd0d8a31ff1846bfa8d5c9c38234b59c environment/None environment-version/None interactive/True from-script/False python/2.7.15rc1 term/xterm-256color (Linux 4.4.0-17134-Microsoft)
== конец заголовков ==
== начало тела ==

== конец тела ==
==== конец запроса ====
Проверка сетевого подключения...⠛=======================
==== начало запроса ====
uri: https://cloudresourcemanager.googleapis.com/v1beta1/projects
method: GET
== начало заголовков ==
user-agent: gcloud/242.0.0 command/gcloud.info invocation-id/64ab6960448d463cafdc317978f418cc environment/None environment-version/None interactive/True from-script/False python/2.7.15rc1 term/xterm-256color (Linux 4.4.0-17134-Microsoft)
== конец заголовков ==
== начало тела ==

== конец тела ==
==== конец запроса ====
Проверка сетевого подключения...⠶---- начало ответа ----
-- начало заголовков --
-content-encoding: gzip
alt-svc: quic=":443"; ma=2592000; v="46,44,43,39"
cache-control: private
content-length: 304
content-type: application/json; charset=UTF-8
date: Thu, 18 Apr 2019 00:12:09 GMT
server: ESF
server-timing: gfet4t7; dur=620
status: 401
transfer-encoding: chunked
vary: Origin, X-Origin, Referer
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
-- конец заголовков --
-- начало тела --
{
  "error": {
    "code": 401,
    "message": "Запрос не содержит необходимого аутентификационного удостоверения. Ожидается OAuth 2 токен доступа, cookie для входа или другие действительные аутентификационные данные. См. https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }
}

-- конец тела --
общее время выполнения (запрос+ответ): 0.733 сек
---- конец ответа ----
----------------------
=======================
==== начало запроса ====
uri: https://www.googleapis.com/auth/cloud-platform
method: GET
== начало заголовков ==
user-agent: gcloud/242.0.0 command/gcloud.info invocation-id/50be4ffdf73848c5a6a922809c6dd1cf environment/None environment-version/None interactive/True from-script/False python/2.7.15rc1 term/xterm-256color (Linux 4.4.0-17134-Microsoft)
== конец заголовков ==
== начало тела ==

== конец тела ==
==== конец запроса ====
Проверка сетевого подключения...⠧---- начало ответа ----
-- начало заголовков --
-content-encoding: gzip
alt-svc: quic=":443"; ma=2592000; v="46,44,43,39"
cache-control: private, max-age=0
content-length: 14
content-location: https://www.googleapis.com/auth/cloud-platform
content-type: text/plain
date: Thu, 18 Apr 2019 00:12:09 GMT
expires: Thu, 18 Apr 2019 00:12:09 GMT
server: GSE
status: 200
transfer-encoding: chunked
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
-- конец заголовков --
-- начало тела --
cloud-platform
-- конец тела --
общее время выполнения (запрос+ответ): 0.119 сек
---- конец ответа ----
----------------------
=======================
==== начало запроса ====
uri: https://dl.google.com/dl/cloudsdk/channels/rapid/components-2.json
method: GET
== начало заголовков ==
user-agent: gcloud/242.0.0 command/gcloud.info invocation-id/889d0c5e54df432eaa86e2f0641f2533 environment/None environment-version/None interactive/True from-script/False python/2.7.15rc1 term/xterm-256color (Linux 4.4.0-17134-Microsoft)
== конец заголовков ==
== начало тела ==

== конец тела ==
==== конец запроса ====
Проверка сетевого подключения...выполнено.
ОШИБКА: Проверка доступности не выполнена.
    Невозможно подключиться к https://www.google.com (SSLHandshakeError)
    Невозможно подключиться к https://accounts.google.com (SSLHandshakeError)
    Невозможно подключиться к https://dl.google.com/dl/cloudsdk/channels/rapid/components-2.json (SSLHandshakeError)
Проблемы с сетевым подключением могут быть связаны с настройками прокси или брандмауэра.

Текущие эффективные настройки сетевого прокси Cloud SDK:
    тип = http
    хост = proxy.server.domain.com
    порт = 8080
    имя пользователя = None
    пароль = None

Что вы хотите сделать?
 [1] Изменить свойства сетевого прокси Cloud SDK
 [2] Очистить все свойства прокси gcloud
 [3] Выйти
Пожалуйста, введите ваш числовой выбор:  3

ОШИБКА: Сетевая диагностика не удалась (0/1 проверок прошло).

Диагностика свойств обнаруживает проблемы, которые могут быть вызваны свойствами.
Проверка скрытых свойств...выполнено.
Проверка скрытых свойств прошла.
Диагностика свойств пройдена (1/1 проверок прошло).

INFO: Явное отображение.
DEBUG: Проверки обновлений SDK отключены.

Обновление: После запуска
gcloud config set auth/disable_ssl_validation True
возможно, я смогу пройти эту проблему. Но затем появляется эта ошибка:

DEBUG: Запуск [gcloud.info] с аргументами: [--run-diagnostics: "True", --verbosity: "debug"]
Сетевая диагностика обнаруживает и исправляет локальные проблемы сетевого подключения.
Проверка сетевого подключения...
.........выполнено.
Проверка доступности пройдена.
Сетевая диагностика пройдена (1/1 проверок прошло).

Диагностика свойств обнаруживает проблемы, которые могут быть вызваны свойствами.
Проверка скрытых свойств...
выполнено.
ОШИБКА: Проверка скрытых свойств не удалась.
Установлены следующие скрытые свойства:
    [auth/disable_ssl_validation]
Файлы свойств
    Пользователь: /home/<USER>/.config/gcloud/configurations/config_default
    Установка: /usr/lib/google-cloud-sdk/properties

ОШИБКА: Диагностика свойств не удалась (0/1 проверок прошло).

INFO: Явное отображение.
DEBUG: Проверки обновлений SDK отключены.

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

Временное решение уже опубликовано в PIT случае 35907316 с помощью следующей команды:

gcloud config set custom_ca_certs_file
/etc/ssl/certs/ca-certificates.crt

.

Ответ или решение

Ошибка при работе с gcloud: "Проблемы с подключением к сети могут быть вызваны настройками прокси или брандмауэра"

Если вы сталкиваетесь с проблемами подключения к сети при попытке открыть SSH-сессию к вашим виртуальным машинам (VM) в Google Cloud Platform (GCP) с использованием утилиты gcloud, возможно, это связано с настройками вашего HTTP-прокси-сервера. Рассмотрим, как можно решить эту проблему и восстановить нормальное соединение.

Шаг 1: Анализ ошибки

При диагностировании проблемы с помощью команды gcloud info --run-diagnostics обнаруживается ошибка:

ERROR: Reachability Check failed.
    Cannot reach https://www.google.com (SSLHandshakeError)
    Cannot reach https://accounts.google.com (SSLHandshakeError)
    Cannot reach https://dl.google.com/dl/cloudsdk/channels/rapid/components-2.json (SSLHandshakeError)
Проблемы с подключением к сети могут быть вызваны настройками прокси или брандмауэра.

Это указывает на проблемы с SSL-соединением, вероятно, вызванные вашим текущим прокси-сервером. Переменная окружения $http_proxy указывает адрес вашего прокси-сервера: http://proxy.server.domain.com:8080.

Шаг 2: Обходные пути

  1. Добавление внутреннего CA в файл сертификатов:

    • Разместите внутренние сертификаты Центра Сертификации (CA) в файле cacerts.txt, который, вероятно, находится по следующему пути: /usr/lib/google-cloud-sdk/lib/third_party/httplib2/python3/httplib2.
  2. Настройка пользовательского файла сертификатов:

    • Используйте следующую команду для установки пользовательского файла сертификатов:
      gcloud config set custom_ca_certs_file /etc/ssl/certs/ca-certificates.crt

      Это должно помочь gcloud использовать правильные сертификаты для аутентификации с внешними сервисами через прокси.

Шаг 3: Устранение ошибок аутентификации

При выполнении команды gcloud info --run-diagnostics --verbosity=debug --log-http возникнет ошибка неаутентифицированного запроса (код 401), которая указывает на отсутствие необходимых учетных данных OAuth 2. Это происходит из-за того, что gcloud не может получить доступ к сервисам Google без валидного токена.

  • Выполните аутентификацию, используя команду:
    gcloud auth login

    Это обеспечит корректное получение и использование OAuth-токена.

Шаг 4: Проверка настроек прокси

Неправильные настройки прокси могут стать причиной всех упомянутых проблем, особенно в рабочей среде с ограничениями доступа:

  • Убедитесь, что настройки прокси указаны корректно в gcloud:
    gcloud config set proxy/type http
    gcloud config set proxy/address proxy.server.domain.com
    gcloud config set proxy/port 8080

Шаг 5: Отключение проверки SSL

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

gcloud config set auth/disable_ssl_validation True

Тем не менее, это не рекомендуется как постоянное решение по соображениям безопасности.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...