2014-12-01 81 views
5

我是Google雲新手。我在Google雲中有兩個項目,我需要從一個項目實例和另一個項目實例複製文件。我試圖用gcloud計算拷貝文件在兩個谷歌雲實例之間複製文件

我得到以下錯誤:

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 

我需要兩個實例分別在不同項目之間複製文件

回答

9

我能複製您問題與一個全新的VM實例,得到相同的錯誤。以下是我爲糾正問題所採取的幾個步驟:

確保您已通過身份驗證並擁有同一帳戶的兩個項目的權利!

$ gcloud config list(如果你看到的服務帳戶@ developer.gserviceaccount.com,你需要切換到正在對兩個項目啓用該帳戶。您可以檢查從Devlopers控制檯>權限)

$ gcloud auth login(將鏈接複製到一個新的窗口,登錄,將代碼複製並粘貼回到提示符)

$ gcloud compute copy-files test.tgz --project stack-complete-343 instance-IP:/home/ubuntu --zone us-central1-a(我也將使用實例名稱,而不是IP)的

這最後的命令應該也會生成你的ssh密鑰。您應該看到類似這樣的內容,但不必擔心輸入密碼:

警告:將執行[/ usr/bin/ssh-keygen]以生成密鑰。

生成公共/私有密鑰對

輸入密碼(空爲沒有密碼):在遠程實例

1

轉到權限選項卡(即你不會對運行gcloud compute copy-files實例) 。然後轉到服務帳戶並創建一個新帳戶,爲其命名並選中該框以獲取密鑰文件,並選擇JSON。使用gcloud compute copy-files和您的個人帳戶將該密鑰文件從您的個人計算機上傳到本地實例(即您正在接入的計算機並運行gcloud compute copy-files命令)。然後通過SSH從本地實例運行此文件。 gcloud auth activate-service-account ACCOUNT --key-file KEY-FILE用生成的電子郵件地址替換ACCOUNT,用KEY-FILE替換您之前從您的個人計算機上傳的密鑰文件的路徑。然後,您應該可以訪問設置帳戶的實例。這些步驟必須在您想要在其間複製文件的每個實例上重複。如果這些說明不清楚,請告訴我,我會盡力幫忙。

0

不建議在計算引擎實例上驗證您的帳戶,因爲這可能會將您的憑據暴露給任何有權訪問計算機的人。

相反,您可以讓您的服務帳戶使用Compute Engine API。首先,停止實例。一旦停止,您可以從控制檯編輯Cloud API訪問範圍。修改計算引擎範圍從禁用只讀

您應該現在就可以使用copy-files命令。這可讓您的服務帳戶訪問Compute Engine API。

+0

你說的「修改計算引擎範圍從禁用到只讀」的部分......這是源代碼vm關於目標虛擬機什麼,也需要它的權限修改我相信,你會同意嗎?我將嘗試一下 – 2017-07-05 23:43:33

+0

我不這麼認爲,假設它有相同的服務帳戶,它應該沒問題。它是如何去的? – Kat 2017-07-06 18:18:48

+0

我試着通過完全訪問所有云端API來訪問源代碼,但沒有成功......沒有機會改變目標上的內容,但是考慮到它......雲端API需要寫訪問權限目標,正確嗎?如果不是如何,它可以「寫」在目標機器上? – 2017-07-06 19:14:53

相關問題