Отказано в доступе при использовании учетной записи службы с командой Google scp

Отказано в доступе при использовании учетной записи службы с командой Google scp

Я хочу использовать CircleCI для развертывания моего кода в экземпляре Compute Engine. Я создал пользователя учетной записи службы и использую команду gcloud scp ниже:

gcloud --quiet compute scp --recurse dev/test/ [DEST_INSTANCE]:/var/www/dev/dev/test --zone=northamerica-northeast1-a --project [PROJECT_NAME]

для загрузки файлов в подпапку var, и развертывание завершается ошибкой ниже:

scp: /var/www/dev/dev/test: Permission denied
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].
Exited with code 1

Теперь я хочу предоставить доступ к учетной записи службы, но я не вижу ее в списке пользователей, которым можно предоставить доступ, когда я использую cat /etc/passwd. Как мне предоставить разрешение учетной записи службы? Роли, которые я назначил этой учетной записи: введите описание изображения здесь

решение1

Похоже, у вашего имени пользователя нет прав на запись в виртуальную машину GCE /var/www/dev/dev/test.

Чтобы решить вашу проблемуВы можете выбрать один из двух вариантов решения:

  1. Изменить разрешения:

    • предоставьте вашему имени пользователя /var/www/dev/dev/testпрямой доступ на запись, например:

      sudo chown -R $USER /var/www/dev/dev/test

    • копировать файлы сgcloud compute scpпрямо к /var/www/dev/dev/test.

  2. Копирование файлов в два этапа:

    • использоватьgcloud compute scpдля передачи файлов/каталогов, куда ваш пользователь может записывать данные, например, /tmpили /home/$USER;

    • Подключитесь к экземпляру виртуальной машины по SSH черезgcloud compute sshили через Консоль и скопируйте файлы из временного расположения, используя sudoдля получения соответствующих разрешений.

Примечаниечто поскольку этот вопрос касается виртуальных машин GCE, вы не можете напрямую подключиться по SSH к экземпляру виртуальной машины как root, а также не можете напрямую копировать файлы как root, по той же причине: gcloud compute scpиспользует scp, который использует sshдля аутентификации.

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

решение2

Проверьте используемую учетную запись службы. Есть одна учетная запись службы, которая является учетной записью по умолчанию для GCE и создана GCP. Другая — та, которую вы создали.

Если вы используете созданную вами учетную запись, авторизовали ли вы вход в учетную запись службы с помощью файла ключа JSON?

решение3

Активируйте нужную учетную запись службы, для которой вы предоставили роли на снимке экрана, с помощью команды:

gcloud auth активировать-сервис-аккаунт $account --key-file=the_key_file.json

Связанный контент