【发布时间】:2015-11-06 00:23:31
【问题描述】:
使用 Google 开发者控制台“计算引擎”我正在尝试通过 SSH 连接到 Google VM 实例。 它不起作用。由于“网络关联”的问题,我在创建实例时遇到了麻烦。 这是我的问题和解决方案:Why is "Create" disabled in Google Compute Engine VM instances?
现在导致我的 SSH 问题的可能原因是什么?
【问题讨论】:
使用 Google 开发者控制台“计算引擎”我正在尝试通过 SSH 连接到 Google VM 实例。 它不起作用。由于“网络关联”的问题,我在创建实例时遇到了麻烦。 这是我的问题和解决方案:Why is "Create" disabled in Google Compute Engine VM instances?
现在导致我的 SSH 问题的可能原因是什么?
【问题讨论】:
原来是防火墙问题。与“默认”网络不同,当您手动添加一个时,它不会自动打开端口 22 以使 ssh 工作。
解决此问题的最简单方法是通过 Google 开发者控制台的“网络”页面。如果您转到网络部分并选择您正在使用的自定义网络,它可以选择添加防火墙规则。对我来说不幸的是,直到我使用 Google Cloud Shell 完成它时我才弄清楚这一点......这是我如何做到的“漫长的道路”,实际上这将使您对整个 Google VM 管理有更多的控制和洞察力模型。它还将确保您可以通过 Google Cloud 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 的规则。它可能丢失了。
如果您实际上在“默认”网络上,则可以使用您在 Google 文档中找到的命令:
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."
将 [network name] 替换为您的文字值。
执行后,再次尝试连接命令。它现在应该可以工作了!
【讨论】: