0

我一直试图在Dataproc中使用初始化脚本jupyter repository来创建群集。无法在群集中使用SSH Dataproc主机

但是当我尝试ssh到主这样一来就能访问Jupyter界面运行此命令:

gcloud compute ssh --zone=zone_name --ssh-flag="-D 10000" --ssh-flag="-N" --ssh-flag="-n" "cluster1-m" & 

我得到的错误:

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

我可以确认所有ssh密钥正常创建。我想这另一种选择则:

gcloud compute ssh --zone=zone_name --ssh-flag="-D 10000" --ssh-flag="-N" --ssh-flag="-n" "[email protected]" & 

这似乎是工作,我可以使用SSH连接实例,但现在我得到的错误:

bind: Cannot assign requested address channel_setup_fwd_listener_tcpip: cannot listen to port: 10000 Could not request local forwarding.

要创建我使用的集群:

gcloud dataproc clusters create $CLUSTER_NAME \ 
--metadata "JUPYTER_PORT=8124,JUPYTER_CONDA_PACKAGES=numpy:pandas:scikit-learn:jinja2:mock:pytest:pytest-cov" \ 
--initialization-actions \ 
    gs://dataproc-initialization-actions/jupyter/jupyter.sh \ 
--bucket $BUCKET_NAME 

我在Docker镜像中运行这个Debian 8.9(jessie)。

如果您需要任何额外的信息,请让我知道。

回答

0

如果您验证了可以正常进入集群的SSH,那么如果您刚刚得到bind: Cannot assign requested address错误,则可能意味着您已经在本机上使用端口10000已经有另一个本地端口转发的SSH会话。如果看到bind错误,则应该首先尝试使用不同的本地端口,如-D 12345。你可以使用top或你的任务管理器来检查你是否有一个挂起的ssh -D命令仍在运行,并占用端口10000.

+0

嗨丹尼斯,感谢您的帮助。我也尝试了不同的端口,并检查了可能仍在后台运行的其他进程,但没有。在发布这个问题之后我测试的是在docker之外,在我自己的机器上安装所有东西,然后一切正常。我仍然不太明白Docker镜像中会发生什么,它会中断ssh(因为我可以使用'will @ hostname'成功ssh我在想root用户是否与它有关,但我不确定,只是猜测) –

+0

啊,这是有道理的;你可能只需要一些Docker容器的端口映射标志:https://stackoverflow.com/questions/32070789/portforwarding-from-within-docker-container和https://bobcares.com/blog/docker-port-expose / –