首页 > 解决方案 > 如何确保项目范围的 SSH 密钥将在 Google Compute Engine 中共享而不被阻止?

问题描述

在 Mark Edmonson 的帖子之后,我正在尝试使用googleComputeEngineRR 中的库设置我的第一个并行云计算。我克服了很多障碍,但遇到了一个问题:当我执行 gce_vm_cluster() 命令时,我可以在 GCE 中启动新实例,但集群测试返回“权限被拒绝(公钥)错误”(参见下面的代码和错误)。

我按照这些说明生成了一个 SSH 密钥并将公钥存储在项目元数据中。但是在这样做之后,我注意到默认情况下仍会创建实例以阻止项目级 ssh-keys。在阅读了一些描述类似问题的帖子后,我还使用 GCE 控制台添加了一个值为“FALSE”的元数据键“block-project-ssh-keys”,但这并没有解决问题。实例仍然在项目级 ssh 密钥被阻止的情况下启动。

我已经看到一些帖子建议在创建实例后在终端上使用 gcloud 命令进行修复,但我希望这里有一个不同的解决方案,可以让我执行 gce_vm_cluster() 来启动并连接到实例而不会出错。

非常感谢您提供的任何帮助。

这是我执行的代码(我的凭证 JSON 文件保存在当前目录中为“gcs-key.json”,用户名与 ssh-key 中使用的相同):

    # Establish default setting
    my_project <- "merging-patent-and-dime-data"
    my_zone <- "us-east4-a"
    my_account_key <- "gcs-key.json"

    # Set system environmental variables
    Sys.setenv(GCE_AUTH_FILE = my_account_key,
               GCE_DEFAULT_PROJECT_ID = my_project,
               GCE_DEFAULT_ZONE = my_zone)

    # Loading the GCE library after setting environmental variables allows for auto-authentication
    library(googleComputeEngineR) 
    library(future)

    my_docker <- gce_tag_container("rocker/r-parallel")
    n_clusters <- 2

    vms <- gce_vm_cluster(template = "r-vm",
                          dynamic_image = my_docker,
                          cluster_size = n_clusters,
                          username = "nick-short",
                          predefined_type = "n1-standard-4") # This last one is the machine type

这是执行 vce_gm_cluster() 命令后的完整系统输出:


    2019-09-25 10:16:33> # Creating cluster with settings: template = r-base, dynamic_image = rocker/r-parallel, username = nick-short, predefined_type = n1-standard-4, wait = FALSE
    2019-09-25 10:16:38> Operation running...
    2019-09-25 10:16:45> Operation complete in 4 secs
    2019-09-25 10:16:48> Operation complete in 6 secs
    2019-09-25 10:16:49> r-cluster-1 VM running
    2019-09-25 10:16:51> r-cluster-2 VM running
    2019-09-25 10:16:59> Public SSH key uploaded to instance
    2019-09-25 10:17:07> Public SSH key uploaded to instance
    2019-09-25 10:17:07> # Testing cluster:
    Warning: Permanently added '35.245.255.120' (ED25519) to the list of known hosts.
    nickshort@35.245.255.120: Permission denied (publickey).
    Warning: Permanently added '35.186.168.226' (ED25519) to the list of known hosts.
    nickshort@35.186.168.226: Permission denied (publickey).

标签: rsshgoogle-compute-engine

解决方案


问题原来是 SSH 密钥是使用密码创建的。在没有密码的情况下重新创建 SSH 密钥可以让连接发生。


推荐阅读