2014-12-01 8 views
5

Ich bin neu in Google Cloud. Ich habe zwei Projekte in Google Cloud und muss Dateien von einer Projektinstanz und einer anderen Projektinstanz kopieren. Ich habe versucht, gcloud Rechen copy-DateienKopieren von Dateien zwischen zwei Google Cloud-Instanzen

Ich erhalte unten Fehler zu verwenden:

gcloud compute copy-files test.tgz --project stack-complete-343 instance-IP:/home/ubuntu --zone us-central1-a 

ERROR: (gcloud.compute.copy-files) Could not fetch instance: - Insufficient Permission 

Ich brauche Dateien zwischen zwei Instanzen zu kopieren, die jeweils in verschiedenen Projekten sind

Antwort

9

Ich war in der Lage zu replizieren Ihre Problem mit einer brandneuen VM-Instanz, bei der derselbe Fehler auftritt. Hier sind ein paar Schritte, die ich unternommen habe, um das Problem zu beheben:

Stellen Sie sicher, dass Sie authentifiziert sind und Rechte an beiden Projekten mit dem gleichen Konto haben!

$ gcloud config list (wenn Sie das Dienstkonto @ developer.gserviceaccount.com sehen, müssen Sie auf das Konto wechseln, die auf beiden Projekten aktiviert ist. Sie, dass von der Devlopers Console überprüfen> Berechtigungen)

$ gcloud auth login (kopieren sie den Link in neuem Fenster, Login, den Code kopieren und wieder in der Eingabeaufforderung einfügen)

$ gcloud compute copy-files test.tgz --project stack-complete-343 instance-IP:/home/ubuntu --zone us-central1-a (ich würde auch die Instanznamen anstelle der IP)

Dieser letzten Befehl sollte erzeuge auch deine ssh Schlüssel. Sie sollten so etwas sehen, aber machen Sie sich keine Sorgen über die Eingabe einer Passphrase:

WARNUNG: [/ usr/bin/ssh-keygen] wird ausgeführt, um einen Schlüssel zu generieren.

Generierung des öffentlichen/privaten RSA-Schlüsselpaar

Passwort eingeben (leer ohne Passwort):

1

Gehen Sie auf die Registerkarte Berechtigungen auf der Remote-Instanz (dh die Instanz, die Sie NICHT ausgeführt werden gcloud compute copy-files auf) . Dann gehen Sie zu den Service-Konten und erstellen Sie eine neue, geben Sie einen Namen und aktivieren Sie das Kontrollkästchen, um eine Schlüsseldatei dafür zu erhalten und JSON ausgewählt zu lassen. Laden Sie diese Schlüsseldatei von Ihrem persönlichen Computer unter Verwendung von gcloud compute copy-files und Ihrem persönlichen Konto auf die lokale Instanz hoch (d. H. Die Maschine, auf der Sie SSH betreiben und den Befehl gcloud compute copy-files ausführen.) Führen Sie dann diese von der lokalen Instanz über SSH aus. gcloud auth activate-service-account ACCOUNT --key-file KEY-FILE Ersetzen ACCOUNT mit der E-Mail wie Adresse, die generiert wurde und KEY-FILE mit dem Pfad zu der Schlüsseldatei, die Sie früher von Ihrem persönlichen Computer hochgeladen. Dann sollten Sie in der Lage sein, auf die Instanz zuzugreifen, die das Konto eingerichtet hat. Diese Schritte müssen für jede Instanz wiederholt werden, zwischen der Sie Dateien kopieren möchten. Wenn diese Anweisungen nicht klar waren, lassen Sie es mich wissen und ich werde versuchen, Ihnen zu helfen.

0

Es wird nicht empfohlen, Ihr Konto in Compute Engine-Instanzen zu authentifizieren, da dies Ihre Anmeldeinformationen für jeden zugänglich machen kann, der Zugriff auf den Computer hat.

Stattdessen können Sie Ihre Dienstkonten die Compute Engine-API verwenden lassen. Stoppen Sie zuerst die Instanz. Nach dem Stoppen können Sie Cloud API-Zugriffsbereiche über die Konsole bearbeiten. Ändern Sie den Compute Engine-Bereich von Deaktiviert zu Read Only.

Sie sollten jetzt den copy-files Befehl verwenden können. Dadurch kann Ihr Dienstkonto auf die Compute Engine-API zugreifen.

+0

der Teil, wo Sie gesagt haben "Ändern Sie den Compute Engine-Bereich von Deaktiviert zu schreibgeschützt." ... das ist für Quelle vm was ist mit Ziel vm, die auch ihre Berechtigungen benötigt geändert glaube ich, würden Sie zustimmen? Ich werde es in ein bisschen ausprobieren –

+0

Ich glaube nicht, angenommen, es hat das gleiche Service-Konto sollte es in Ordnung sein. Wie ist es gelaufen? – Kat

+0

Ich habe versucht, indem ich vollen Zugriff auf alle Cloud API nur an der Quelle und das hat nicht funktioniert ... hatte keine Chance, dies auf dem Ziel zu ändern, aber darüber nachzudenken ... die Cloud API benötigt Schreibzugriff auf die Ziel, richtig? wenn nicht, wie sonst kann es auf der Zielmaschine "schreiben"? –

Verwandte Themen