r - 如何确保项目范围的 SSH 密钥将在 Google Compute Engine 中共享而不被阻止?
问题描述
在 Mark Edmonson 的帖子之后,我正在尝试使用googleComputeEngineR
R 中的库设置我的第一个并行云计算。我克服了很多障碍,但遇到了一个问题:当我执行 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).
解决方案
问题原来是 SSH 密钥是使用密码创建的。在没有密码的情况下重新创建 SSH 密钥可以让连接发生。
推荐阅读
- oauth - 我想将 cognito 用户(邮件/密码)与 'cognito' 中的 google 帐户用户合并
- python - 如何使用 PYTHON 读取数据类型 BYTEA 的 postgres DB 中的列和压缩 json 的编码
- python - Keras 中的“未知 RProp 优化器”
- python - 尝试使用 if/then 语句访问正确的列值时出现 RecursionError
- unix - awk 加入由多列组成的两个文件的第一列
- apache-kafka - 当所有 Kafka Broker 不可用时,Log4j2 kafka appender 故障转移处理?
- c# - ASP.NET - PartialView 继续使用布局
- flutter - 当我尝试将图像加载到容器中时出现错误 - Flutter
- javascript - 可以让事件处理函数返回一个函数吗?
- mysql - 对 SQL 中的两个单独列使用 Group By 来计算新列