【问题标题】:Unable to ssh to master node of Google Cloud Dataproc, but can ssh to Compute Engine VM无法通过 ssh 连接到 Google Cloud Dataproc 的主节点,但可以通过 ssh 连接到 Compute Engine 虚拟机
【发布时间】:2020-09-04 10:58:57
【问题描述】:

我可以通过 ssh 连接到 Google Cloud 计算引擎虚拟机,但无法通过 ssh 连接到 Google Cloud Dataproc 集群的主节点。

具体来说,

gcloud compute ssh my-vm

工作得很好,而

gcloud compute ssh mycluster-m

失败并显示错误消息:

admin@IP.ADDRESS: Permission denied (publickey).
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].

计算引擎虚拟机和 Dataproc 集群在同一个项目中。我从错误消息中了解到它与 ssh 密钥有关,但我不确定如何修复它 - 我通过云控制台检查了项目中的 ssh 密钥,它是正确的,并尝试了通常的gcloud auth login重置 gcloud 项目登录详细信息。

关于如何解决这个问题的任何提示?

编辑:我正在尝试从我的机​​器而不是云控制台进行 ssh - 这是一个好点,我会尝试一下,看看是否可行。但最后我想用它从我的本地计算机连接到 Jupyter 笔记本,所以这并不能解决无法从我的机器 SSH 到 VM 的问题。

关于创建 Dataproc 集群的命令,我使用来自 hail dataproc python 库的工具,但这些基本上只是 gcloud 计算命令的便利外壳,而这就是失败的原因。但我用来创建 Dataproc 集群的命令是:

gcloud beta dataproc clusters create \
    test \
    --image-version=1.4-debian9 \
    --properties=^|||^spark:spark.task.maxFailures=20|||spark:spark.driver.extraJavaOptions=-Xss4M|||spark:spark.executor.extraJavaOptions=-Xss4M|||spark:spark.speculation=true|||hdfs:dfs.replication=1|||dataproc:dataproc.logging.stackdriver.enable=false|||dataproc:dataproc.monitoring.stackdriver.enable=false|||spark:spark.driver.memory=41g \
    --initialization-actions=gs://hail-common/hailctl/dataproc/0.2.53/init_notebook.py \
    --metadata=^|||^WHEEL=gs://hail-common/hailctl/dataproc/0.2.53/hail-0.2.53-py3-none-any.whl|||PKGS=aiohttp>=3.6,<3.7|aiohttp_session>=2.7,<2.8|asyncinit>=0.2.4,<0.3|bokeh>1.1,<1.3|decorator<5|dill>=0.3.1.1,<0.4|gcsfs==0.2.1|humanize==1.0.0|hurry.filesize==0.9|nest_asyncio|numpy<2|pandas>0.24,<0.26|parsimonious<0.9|PyJWT|python-json-logger==0.1.11|requests>=2.21.0,<2.21.1|scipy>1.2,<1.4|tabulate==0.8.3|tqdm==4.42.1|google-cloud-storage==1.25.* \
    --master-machine-type=n1-highmem-8 \
    --master-boot-disk-size=100GB \
    --num-master-local-ssds=0 \
    --num-preemptible-workers=0 \
    --num-worker-local-ssds=0 \
    --num-workers=2 \
    --preemptible-worker-boot-disk-size=40GB \
    --worker-boot-disk-size=40GB \
    --worker-machine-type=n1-standard-8 \
    --initialization-action-timeout=20m \
    --labels=creator=my_name \
    --max-idle=10m

【问题讨论】:

  • 这看起来不像programming question
  • 抱歉,我在 Stack Overflow 上找到了关于通过 ssh 连接到 Google Cloud 计算引擎的其他答案(例如*.com/questions/42167596/…),如果有更合适的地方可以告诉我
  • 您可以分享一个用于创建 Dataproc 集群的命令吗?您是否指定了任何自定义服务帐号?
  • 当您尝试从您的机器或云控制台进行 ssh 时是否会出现此问题?

标签: ssh google-cloud-platform google-compute-engine gcloud google-cloud-dataproc


【解决方案1】:

原来问题是集群在集群主虚拟机上创建了一个名为 my_username 的新帐户,但我以名为“admin”的用户身份登录到我的笔记本电脑。所以目的地的账号名和key不匹配,所以登录失败。

可以通过在 gcloud 命令中添加用户名来修复:

gcloud compute ssh my_username@mycluster-m

虽然我仍然不明白为什么 dataproc VM 和计算引擎 VM 的 ssh 密钥不同,但如果有人能启发我,我会很高兴。

【讨论】: