2015-11-04 56 views

回答

2

原来是防火墙问题。与“默认”网络不同,当您手动添加一个网络时,它不会自动打开端口22以便ssh正常工作。

解决此问题的最简单方法是通过Google Developer Console“网络”页面。如果您转到网络部分并选择您正在使用的自定义网络,则可以选择添加防火墙规则。不幸的是,对于我来说,直到我通过Google Cloud Shell完成这件事之后,才知道这一点......以下是我如何实现“漫长的道路”,这实际上会让您更好地控制和洞察整个Google VM管理模型。它还将确保您可以通过Google云端Shell进行连接,以备日后再次使用时:

在“计算引擎”中,转至VM部分并选择您的VM。在屏幕的左上角有一个“SSH”按钮和一个省略号(“...”)按钮。点击“...”并选择“查看gcloud命令”。当该窗口打开时,将命令复制到剪贴板。然后关闭窗口并点击屏幕右上角的“> _”(激活Google Cloud Shell)按钮。

当shell加载时,粘贴命令(使用Ctrl + V)。尝试连接后,如果您遇到此防火墙问题,它最终会超时。

显示网络上的防火墙规则,您使用的输入以下内容:

gcloud compute firewall-rules list 

要检查更详细的规则使用:

gcloud compute firewall-rules describe [rule name] 

检查规则与后缀“allow-ssh”,或者更具体地说是打开端口22的端口。它可能会丢失。

如果你实际上是“默认”的网络上,你可以使用你会发现谷歌文​​档在此命令:

gcloud compute firewall-rules create default-allow-ssh --allow tcp:22 

但是,如果你是一个备用网络,使用这个更明确的命令:

gcloud compute firewall-rules create [network name]-allow-ssh --allow tcp:22 --network [network name] --source-ranges 0.0.0.0/0 --description "Allow SSH from anywhere." 

用你的文字值替换[网络名称]。

执行后,再次尝试连接命令。它应该现在工作!