【问题标题】:Accessing project files from vm从 vm 访问项目文件
【发布时间】:2019-11-11 15:11:11
【问题描述】:

从谷歌云平台打开命令终端,你会看到一个项目级的 shell

account_name@cloudshell:/ (project_name)$

在启动新 VM 后,可以像这样将文件从项目级文件系统发送到 VM:

account_name@cloudshell:/ (project_name)$ gcloud compute scp --recurse \
> ~/project-file vm-name:~

在 ssh-ing 到新 VM 后,如何从 VM 内部执行相同的文件传输?

我尝试过的所有东西最终都是这样的:

account_name@vm-name:~$ gcloud compute scp --recurse \
> cloudshell:~/project-file ~
ERROR: (gcloud.compute.scp) Could not fetch resource:
 - The resource 'projects/project_name/zones/my_zone/instances/cloudshell' was not found

【问题讨论】:

    标签: google-cloud-platform google-compute-engine gcloud google-cloud-shell


    【解决方案1】:

    gcloud compute scp 命令不支持将 Google Cloud Shell 作为源/目标。

    Google 最近在支持 Cloud Shell 的“alpha”版本 gcloud 中添加了新命令。

    gcloud alpha cloud-shell scp cloudshell:~/REMOTE-DIR localhost:~/LOCAL-DIR

    在 VM 实例中使用此命令的问题是 VM 使用服务帐户凭据。 Cloud Shell 是根据每个用户的凭据分配/创建的。每个用户 ID 都有一个不同的 Cloud Shell 实例 - 动态创建。使用服务帐号,您无法向 Cloud Shell 识别要与之交互的实例。这意味着创建了一个未映射到用户身份的新 Cloud Shell 实例。

    注意:看起来 API 将来可能会支持此功能,但当前的实现没有指定用户名或 OAuth 凭据的方法。

    您需要使用用户凭据 (OAuth 2.0) 与 Cloud Shell 进行通信。除非您有 GUI 桌面来在 VM 实例中运行 Web 浏览器,否则您无法创建适合 Google Cloud Shell 身份验证的用户凭据。

    您可以限制自己使用 Cloud Shell 实例中的命令将文件复制到 VM 实例或从 VM 实例复制文件,或者查看我刚刚发布的为 Cloud Shell 实现 CLI 的程序。如果您选择第二种方法,请从您的桌面向 Cloud Shell 进行身份验证,然后将包含我的程序的 user_credentials.json 文件复制到您的 VM 实例。这样你就有了一个相当强大的 Cloud Shell 交互命令行工具。

    Google Cloud Shell CLI

    【讨论】:

    • 感谢您的信息。我使用 GCS 的学习曲线已经很长了,所以检查你的程序很难。我想我现在会尝试解决我的问题。
    • 没问题。在我的帖子中,我给了你答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2017-11-18
    • 2018-12-25
    • 1970-01-01
    相关资源
    最近更新 更多