Как получить доступ к экземпляру 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 ответ
В этой документации указаны необходимые роли входа в ОС для учетной записи пользователя, а также для учетной записи службы.