我正在尝试使用gcloud compute ssh
命令从Google Cloud中的另一个虚拟机进入虚拟机。它失败并显示以下消息:
/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/compute/lib/base_classes.py:9: DeprecationWarning: the sets module is deprecated
import sets
Connection timed out
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255]. See https://cloud.google.com/compute/docs/troubleshooting#ssherrors for troubleshooting hints.
我确保ssh键已经到位,但它仍然无法正常工作。我在这里缺少什么?
答案 0 :(得分:5)
您好本网站上有完成此步骤的步骤......
本节假设您事先使用SSH连接到外部可见的实例,并使用gcloud。
在本地计算机上,使用以下命令启动ssh-agent以管理您的密钥:
me@local:~$ eval `ssh-agent`
调用ssh-add将gcloud计算公钥从本地计算机加载到代理中,并将它们用于所有SSH命令进行身份验证:
me@local:~$ ssh-add ~/.ssh/google_compute_engine
使用外部IP地址登录,同时提供-A参数以启用身份验证代理转发。
gcloud compute ssh --ssh-flag="-A" INSTANCE
来源:https://cloud.google.com/compute/docs/instances/connecting-to-instance#sshbetweeninstances。
我不确定'标志',因为它不适合我,也许我有不同的操作系统或Gcloud版本,它会适合你。
答案 1 :(得分:2)
以下是我在Mac上运行以连接到Google Dataproc主VM然后从主MV上跳到工作虚拟机的步骤。我ssh到主VM获取IP。
$ gcloud compute ssh cluster-for-cameron-m
Warning: Permanently added '104.197.45.35' (ECDSA) to the list of known hosts.
然后我exit
编辑。我为该主机启用了转发功能。
$ nano ~/.ssh/config
Host 104.197.45.35
ForwardAgent yes
我添加了gcloud密钥。
$ ssh-add ~/.ssh/google_compute_engine
然后我通过列出ssh-add -l
的关键指纹来验证它已添加。我重新连接到主VM并再次运行ssh-add -l
以验证密钥确实已转发。之后,连接到工作节点工作正常。
ssh cluster-for-cameron-w-0
答案 2 :(得分:1)
关于使用SSH代理转发...
由于实例是在云上频繁创建和销毁的,因此(重新创建的)主机指纹会不断变化。如果新指纹与~/.ssh/known_hosts
不匹配,SSH会自动禁用代理转发。解决方案是:
$ ssh -A -o UserKnownHostsFile=/dev/null ...