2014-12-01 111 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

相关问题