Berechtigung verweigert bei Verwendung des Dienstkontos mit Google-SCP-Befehl

Berechtigung verweigert bei Verwendung des Dienstkontos mit Google-SCP-Befehl

Ich möchte CircleCI verwenden, um meinen Code auf einer Compute Engine-Instanz bereitzustellen. Ich habe einen Service-Account-Benutzer erstellt und verwende den folgenden gcloud scp-Befehl:

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

um Dateien in den Unterordner „var“ hochzuladen, und die Bereitstellung schlägt mit dem folgenden Fehler fehl:

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

Jetzt möchte ich dem Dienstkonto Zugriff gewähren, sehe es aber nicht in der Liste der Benutzer, denen ich Zugriff gewähren soll, wenn ich verwende cat /etc/passwd. Wie kann ich einem Dienstkonto die Berechtigung erteilen? Die Rollen, die ich diesem Konto zugewiesen habe, sind: Bildbeschreibung hier eingeben

Antwort1

Es sieht so aus, als ob Ihr Benutzername keine Schreibberechtigung für die GCE-VM hat /var/www/dev/dev/test.

So lösen Sie Ihr ProblemSie können zwischen zwei Problemumgehungen wählen:

  1. Berechtigungen ändern:

    • Geben Sie Ihrem Benutzernamen direkt Schreibzugriff /var/www/dev/dev/test, zum Beispiel:

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

    • Dateien kopieren mitgcloud compute scpdirekt zu /var/www/dev/dev/test.

  2. Kopieren Sie Dateien in zwei Schritten:

    • verwendengcloud compute scpum Dateien/Verzeichnisse zu übertragen, in die Ihr Benutzer schreiben kann, zB /tmpoder /home/$USER;

    • SSH in die VM-Instanz übergcloud compute sshoder über die Konsole und kopieren Sie Dateien vom temporären Speicherort, sudoum die entsprechenden Berechtigungen zu erhalten.

NotizDa es in dieser Frage um GCE-VMs geht, können Sie aus demselben Grund weder direkt per SSH auf eine VM-Instanz zugreifen root, noch können Sie Dateien direkt als kopieren : verwendet , das zur Authentifizierung auf basiert .rootgcloud compute scpscpssh

Bitte beachten Sie auch die DokumentationÜbertragen von Dateien auf InstanzenAbschnittÜbertragen von Dateien mit dem Befehlszeilentool gcloud.

Antwort2

Bitte überprüfen Sie das verwendete Dienstkonto. Es gibt ein Dienstkonto, das standardmäßig für GCE verwendet wird und von GCP erstellt wurde. Das andere ist das, das Sie erstellt haben.

Wenn Sie das von Ihnen erstellte Konto verwenden: Haben Sie die Anmeldung für das Dienstkonto mithilfe der JSON-Schlüsseldatei autorisiert?

Antwort3

Aktivieren Sie das richtige Dienstkonto, dem Sie die Rollen in Ihrem Screenshot zugewiesen haben, mit dem folgenden Befehl:

gcloud auth activate-service-account $account --key-file=die_Schlüsseldatei.json

verwandte Informationen