【问题标题】:gcloud compute copy-files instance destination?gcloud 计算副本文件实例目的地?
【发布时间】:2014-11-06 09:08:40
【问题描述】:

我无法从实例复制文件,尤其是向实例复制文件。我在实例中创建了 instance.txt(使用 SSH),但这不起作用:

C:\test>gcloud compute copy-files instance-4:~/instance.txt . --zone us-central1-b
Passphrase for key "censoredbyme":
unable to identify instance.txt: no such file or directory
ERROR: (gcloud.compute.copy-files) [C:\Program Files\Google\Cloud SDK\google-cloud-sdk\bin\..\bin\sdk\scp.EXE] exited with return code [1].

编写完整路径有效:

C:\test>gcloud compute copy-files instance-4:/home/stefan_pochmann_gmail_com/instance.txt . --zone us-central1-b
Passphrase for key "censoredbyme":
instance.txt              | 0 kB |   0.0 kB/s | ETA: 00:00:00 | 100%

为什么 ~/ 不起作用?文档示例使用它,不应该是一样的吗?见:

stefan_pochmann_gmail_com@instance-4:~$ cd ~/
stefan_pochmann_gmail_com@instance-4:~$ pwd
/home/stefan_pochmann_gmail_com

另一个方向根本不起作用(?):

C:\test>gcloud compute copy-files local.txt instance-4:/home/stefan_pochmann_gmail_com --zone us-central1-b
Passphrase for key "censoredbyme":
scp: unable to open /home/stefan_pochmann_gmail_com/local.txt: permission denied
ERROR: (gcloud.compute.copy-files) [C:\Program Files\Google\Cloud SDK\google-cloud-sdk\bin\..\bin\sdk\scp.EXE] exited with return code [1].

C:\test>gcloud compute copy-files local.txt instance-4:/home/stefan_pochmann_gmail_com/ --zone us-central1-b
Passphrase for key "censoredbyme":
scp: unable to open /home/stefan_pochmann_gmail_com//local.txt: permission denied
ERROR: (gcloud.compute.copy-files) [C:\Program Files\Google\Cloud SDK\google-cloud-sdk\bin\..\bin\sdk\scp.EXE] exited with return code [1].

为什么权限被拒绝?好的,我试试 ~/ 而不是写完整路径:

C:\test>gcloud compute copy-files local.txt instance-4:~/ --zone us-central1-b
Passphrase for key "censoredbyme":
local.txt                 | 0 kB |   0.0 kB/s | ETA: 00:00:00 | 100%

看起来就像它上传了文件,但文件不存在。至少不在我期望的 /home/stefan_pochmann_gmail_com/ 中。但我不知道,因为我不得不使用 ~/ 这在下载方向上根本不起作用。我如何让它发挥作用?

【问题讨论】:

    标签: upload gcloud


    【解决方案1】:

    在这种情况下,Google Cloud SDK 按预期工作。

    当您第一次尝试使用 gcloud compute 命令时,它会告诉您“您没有用于 Google Compute Engine 的 SSH 密钥”并且它会创建私钥、公钥(.pub) 和 PuTTY 格式的密钥 (.ppk) 通常在 C:\Users\<username>\.ssh\ 目录中(不同的 Windows 版本可能不同)。

    如果您打开 google_compute_engine.pub 文件,最后您会找到用于访问实例的用户名。此用户名与您在执行 gcloud 命令时登录的本地用户名匹配。

    如果您想运行gcloud compute copy-files instance-4:~/instance.txt . --zone us-central1-b,您可以按照以下步骤操作: 1-转到开发人员控制台->选择您的项目->计算->计算引擎->元数据-> SSH密钥->编辑并修改左侧出现Stefan的SSH密钥,键入stefan_pochmann_gmail_com而不是末尾的Stefan关键内容。

    【讨论】:

    • 如果这是有意的,那么该错误就在文档中。谁的本地名称与他们的默认 gce 名称匹配?我猜几乎没有人。 compute page(我来自哪里)完全忽略了这个问题,甚至copy-files page 也没有谈论它,只在技术完整语法中显示用户名选项。
    • 您的解决方案看起来很骇人听闻,尤其是因为密钥中的用户名与存储它的用户名不匹配。这在某处被记录为正确的方式吗?那我可能会这样做。
    • 当您创建一个新项目然后创建您的第一个实例时,不会创建用户。然后,您有 3 种创建用户的方法: 1- 使用命令 gcloud compute ssh <instance> 2- 创建 SSH 密钥并将其手动添加到项目元数据中 3- 单击您可以在开发者控制台中找到的“SSH”按钮. #1 和 #2 将在您的本地计算机中创建一个与您的用户匹配的用户。但是,#3 将创建一个与您用于登录开发者控制台的电子邮件地址相匹配的用户,因为您的浏览器不知道您计算机的用户名。
    • 啊,有道理。我确实使用了 SSH 按钮,因为它在创建实例后就在我面前。我会尝试其他方法。谢谢。
    【解决方案2】:

    好的,我刚刚解决了。我的本地帐户是“Stefan”,gcloud 在实例中将 /home/Stefan 用于 ~/(错误?)。这就解释了错误,上传的文件最终成为 /home/Stefan/local.txt (其中 /home/Stefan 以及其中的所有内容都由新创建的用户“Stefan”拥有。我不得不使用 sudo 删除它)。在实例名称起作用之前添加“stefan_pochmann_gmail_com@”。

    【讨论】:

      【解决方案3】:

      如果您想将文件从本地机器复制到谷歌云实例 (gcloud)

      然后使用以下命令:

      gcloud compute scp [file location] [user]@[instance]:~/[location] --zone [zone name]

      例如:

      gcloud compute scp ~/Documents/hello.txt john@linux:~/MyFiles --zone us-east1-b

      【讨论】:

      • 这很有效,谷歌应该更新他们的文档。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 2023-03-13
      • 2016-12-16
      • 2018-09-20
      • 1970-01-01
      • 2018-11-09
      • 2019-02-13
      相关资源
      最近更新 更多