permiso denegado al utilizar la cuenta de servicio con el comando scp de Google

permiso denegado al utilizar la cuenta de servicio con el comando scp de Google

Quiero usar CircleCI para implementar mi código en la instancia de Compute Engine. Creé un usuario de cuenta de servicio y uso el comando gcloud scp a continuación:

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

para cargar archivos en la subcarpeta var y la implementación falla con el siguiente error:

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

Ahora, quiero otorgar acceso a la cuenta de servicio pero no la veo en la lista de usuarios a los que otorgar acceso cuando uso cat /etc/passwd. ¿Cómo puedo otorgar permiso a una cuenta de servicio? Los roles que le he asignado a esta cuenta son: ingrese la descripción de la imagen aquí

Respuesta1

Parece que su nombre de usuario no tiene permisos para escribir en la máquina virtual de GCE /var/www/dev/dev/test.

Para resolver tu problemapuede elegir una de dos soluciones alternativas:

  1. Cambiar permisos:

    • déle a su nombre de usuario acceso de escritura /var/www/dev/dev/testdirectamente, por ejemplo:

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

    • copiar archivos congcloud compute scpdirectamente a /var/www/dev/dev/test.

  2. Copie archivos en dos pasos:

    • usargcloud compute scppara transferir archivos/directorios donde su usuario puede escribir, por ejemplo, /tmpo /home/$USER;

    • SSH en la instancia de VM a través degcloud compute ssho a través de la Consola y copie archivos desde una ubicación temporal sudopara obtener los permisos adecuados.

NotaDado que esta pregunta es sobre máquinas virtuales de GCE, no puede utilizar SSH directamente a una instancia de máquina virtual como rootni puede copiar archivos directamente como root, por la misma razón: gcloud compute scpusos scpque dependen sshde la autenticación.

Además, eche un vistazo a la documentación.Transferir archivos a instanciassecciónTransferir archivos usando la herramienta de línea de comandos de gcloud.

Respuesta2

Verifique la cuenta de servicio en uso. Hay una cuenta de servicio predeterminada para GCE y creada por GCP. El otro es el que creaste.

Si está utilizando la que creó, ¿ha autorizado el inicio de sesión para la cuenta de servicio utilizando el archivo de clave JSON?

Respuesta3

Active la cuenta de servicio correcta para la cual ha otorgado los roles en su captura de pantalla usando el comando:

cuenta-servicio-activación de autenticación de gcloud $ cuenta --key-file=the_key_file.json

información relacionada