在两个Google Cloud实例之间复制文件

时间:2014-12-01 19:04:33

标签: google-cloud-platform

我在Google Cloud中有两个项目,我需要将文件从一个项目中的实例复制到另一个项目中的实例。我试图使用' 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

6 个答案:

答案 0 :(得分:10)

我能够使用全新的VM实例复制您的问题,并获得相同的错误。以下是我为解决问题而采取的几个步骤:

确保您已通过身份验证并拥有同一帐户的两个项目的权利!

$ gcloud config list(如果您看到服务帐户@ developer.gserviceaccount.com,则需要切换到两个项目都启用的帐户。您可以从Devlopers Console&gt;权限检查)< / p>

$ 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]将被执行以生成密钥。

生成公共/私有rsa密钥对

输入密码(无密码短语为空):

答案 1 :(得分:1)

转到远程实例的权限选项卡(即您将不会运行的实例gcloud compute copy-files)。然后转到服务帐户并创建一个新帐户,为其命名并选中该框以获取其密钥文件并选择JSON。使用gcloud compute copy-files和您的个人帐户将该密钥文件从您的个人计算机上传到本地实例(即您正在进入SSH并运行gcloud compute copy-files命令的计算机。)然后从本地实例运行此文件通过SSH。 gcloud auth activate-service-account ACCOUNT --key-file KEY-FILEACCOUNT替换为生成的地址等电子邮件,将KEY-FILE替换为您之前从个人计算机上传的密钥文件的路径。然后,您应该能够访问设置帐户的实例。必须在要在其间复制文件的每个实例上重复这些步骤。如果这些说明不明确,请告诉我,我会尽力帮忙。

答案 2 :(得分:0)

不建议在Compute Engine实例上验证您的帐户,因为这可能会将您的凭据公开给任何有权访问该计算机的人。

相反,您可以让您的服务帐户使用Compute Engine API。首先,停止实例。停止后,您可以从控制台编辑 Cloud API访问范围。将计算引擎范围从已禁用修改为只读

您现在应该可以只使用copy-files命令。这样,您的服务帐户就可以访问Compute Engine API。

答案 3 :(得分:0)

最简单的方法是使用“ scp”命令和.pem文件。这是一个例子

sudo scp -r -i your/path_to/.pem your_username@ip_address_of_instance:path/to/copy/file

答案 4 :(得分:0)

如果两个人都在同一个项目中,这是最简单的方法

gcloud compute copy-files yourFileName --project yourProjectName instance-name:~/folderInInstance --zone europe-west1-b

显然,您应该根据实例编辑区域。

答案 5 :(得分:0)

获得许可的一种方法是启用Cloud API access scopes。您可以将它们设置为Allow full access to all Cloud APIs

console中,单击instance,然后使用上方的EDIT按钮。滚动到底部并更改Cloud API access scopes。另请参见此answer