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

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

  • Compute OS Admin Login
  • Compute OS Login

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

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

И, наконец, в моем bitbucket-конвейере у меня настроен ключ 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, но я не смог понять это.

1 ответ

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

Другие вопросы по тегам