使用Google开发者控制台“计算引擎”我试图通过SSH连接到Google VM实例。 它不起作用。由于“网络关联”的问题,我无法创建实例。 这是我的问题和解决方案:Why is "Create" disabled in Google Compute Engine VM instances?为什么无法通过除“默认”之外的网络通过SSH连接到Google VM实例?
现在我的SSH问题的可能原因是什么?
使用Google开发者控制台“计算引擎”我试图通过SSH连接到Google VM实例。 它不起作用。由于“网络关联”的问题,我无法创建实例。 这是我的问题和解决方案:Why is "Create" disabled in Google Compute Engine VM instances?为什么无法通过除“默认”之外的网络通过SSH连接到Google VM实例?
现在我的SSH问题的可能原因是什么?
原来是防火墙问题。与“默认”网络不同,当您手动添加一个网络时,它不会自动打开端口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."
用你的文字值替换[网络名称]。
执行后,再次尝试连接命令。它应该现在工作!