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