Назад | Перейти на главную страницу

Как получить доступ к экземпляру Google Cloud Compute как услуге через SSH?

Я пытаюсь получить доступ к экземпляру Compute через SSH в моем битбакет-конвейере, но по какой-то причине все, что я пытаюсь сделать, не работает, поэтому я, очевидно, что-то упускаю. Я создал сервисный аккаунт в своем проекте Google Cloud. Я дал этой службе следующие разрешения IAM:

В моем конвейере есть следующий код:

apk add --no-cache openssh-client python2-dev
wget -O ~/gc-sdk.tar.gz https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-261.0.0-linux-x86_64.tar.gz
tar xvzf ~/gc-sdk.tar.gz -C ~/
export PATH="$PATH:/root/google-cloud-sdk/bin"
~/google-cloud-sdk/install.sh -q
GCLOUD_KEY_FILE=/root/key.json
echo "${GCR_JSON_KEY}" > ${GCLOUD_KEY_FILE}
gcloud auth activate-service-account --key-file ${GCLOUD_KEY_FILE}

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

В метаданных моего Compute Engine у ​​меня есть:

enable-oslogin  TRUE

И, наконец, в моем битбакет-конвейере у меня настроен SSH-ключ, который также добавляется к метаданным моего Compute Engine (я думаю, этого не требуется, если включен oslogin?).

Однако если я попытаюсь бежать gcloud compute ssh --project myproject myinstance Я собираюсь:

Permission denied (publickey).
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255]

Какой шаг здесь отсутствует, чтобы я мог просто использовать SSH в моем экземпляре Compute Engine в качестве службы?

Добавлено: Я обнаружил, что это действительно работает, когда я предоставляю своему сервису роль редактора для всего проекта. Хотя это довольно чрезмерно разрешительно, но, по крайней мере, теперь я знаю, что проблема связана с разрешениями. Итак, каковы наименее разрешительные настройки IAM для этого? Я попробовал несколько из категории Compute Engine, но не смог понять.

это документация указывает необходимые роли входа в ОС для учетной записи пользователя, а также для учетной записи службы.