
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:
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:
Cambiar permisos:
déle a su nombre de usuario acceso de escritura
/var/www/dev/dev/test
directamente, por ejemplo:sudo chown -R $USER /var/www/dev/dev/test
copiar archivos con
gcloud compute scp
directamente a/var/www/dev/dev/test
.
Copie archivos en dos pasos:
usar
gcloud compute scp
para transferir archivos/directorios donde su usuario puede escribir, por ejemplo,/tmp
o/home/$USER
;SSH en la instancia de VM a través de
gcloud compute ssh
o a través de la Consola y copie archivos desde una ubicación temporalsudo
para 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 root
ni puede copiar archivos directamente como root
, por la misma razón: gcloud compute scp
usos scp
que dependen ssh
de 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