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 VM에 대한 쓰기 권한이 없는 것 같습니다 /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).

    • 다음을 통해 VM 인스턴스에 SSH로 접속gcloud compute ssh또는 콘솔을 통해 적절한 권한을 얻기 위해 임시 위치에서 파일을 복사합니다 sudo.

메모이 질문은 GCE VM에 관한 것이기 때문에 SSH를 통해 VM 인스턴스에 직접 연결할 수 없으며 root파일을 직접 복사할 수도 없습니다 root. 같은 이유로 인증에 의존하는 gcloud compute scp사용입니다 .scpssh

추가로, 문서를 살펴보시기 바랍니다.인스턴스로 파일 전송부분gcloud 명령줄 도구를 사용하여 파일 전송.

답변2

사용중인 서비스 계정을 확인해주세요. GCE의 기본 서비스 계정이자 GCP에서 생성된 서비스 계정이 하나 있습니다. 다른 하나는 당신이 만든 것입니다.

자신이 만든 계정을 사용하는 경우 JSON 키 파일을 사용하여 서비스 계정에 대한 로그인을 승인하셨나요?

답변3

다음 명령어를 사용하여 스크린샷에서 역할을 부여한 올바른 서비스 계정을 활성화합니다.

gcloud 인증 활성화-서비스-계정 $account --key-file=the_key_file.json

관련 정보