为什么我无法通过 "default" 以外的网络通过 SSH 连接到 Google VM 实例?
Why can't I connect to a Google VM instance via SSH over a network other than "default"?
使用 Google 开发人员控制台 "Compute Engine" 我正在尝试通过 SSH 连接到 Google VM 实例。
它不起作用。由于 "network association" 的问题,我在创建实例时遇到了问题。
这是我的问题和解决方案:
现在导致我的 SSH 问题的可能原因是什么?
原来是防火墙的问题。与 "default" 网络不同,当您手动添加一个网络时,它不会自动打开端口 22 以使 ssh 工作。
解决此问题的最简单方法是通过 Google 开发人员控制台 "Networking" 页面。如果您转到网络部分和 select 您正在使用的自定义网络,它可以选择添加防火墙规则。对我来说不幸的是,直到我用 Google 云 Shell 做到了这一点,我才弄清楚...这是我在 "long way" 中的做法,这实际上会给你更多控制和洞察整个 Google VM 管理模型。它还将确保您可以通过 Google 云 Shell 连接,以防您将来需要再次连接:
在 "Compute Engine" 中转到 VM 部分并 select 您的 VM。在屏幕的左上角是一个 "SSH" 按钮和一个省略号 ("...") 按钮。单击“...”和 select "View gcloud command"。当 window 打开时,将命令复制到剪贴板。然后关闭window,点击屏幕右上角的“>_”(激活Google云Shell)按钮。
加载 shell 时,粘贴命令(使用 Ctrl+V)。尝试连接后,如果您遇到此防火墙问题,它最终会超时。
要显示您正在使用的网络上的防火墙规则,请输入以下内容:
gcloud compute firewall-rules list
要更详细地检查规则,请使用:
gcloud compute firewall-rules describe [rule name]
检查后缀为 "allow-ssh" 的规则,或者更具体地说是打开端口 22 的规则。它可能丢失了。
如果您确实在 "default" 网络上,则可以使用 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."
用您的文字值替换 [网络名称]。
执行后,再次尝试连接命令。它现在应该可以工作了!
使用 Google 开发人员控制台 "Compute Engine" 我正在尝试通过 SSH 连接到 Google VM 实例。
它不起作用。由于 "network association" 的问题,我在创建实例时遇到了问题。
这是我的问题和解决方案:
现在导致我的 SSH 问题的可能原因是什么?
原来是防火墙的问题。与 "default" 网络不同,当您手动添加一个网络时,它不会自动打开端口 22 以使 ssh 工作。
解决此问题的最简单方法是通过 Google 开发人员控制台 "Networking" 页面。如果您转到网络部分和 select 您正在使用的自定义网络,它可以选择添加防火墙规则。对我来说不幸的是,直到我用 Google 云 Shell 做到了这一点,我才弄清楚...这是我在 "long way" 中的做法,这实际上会给你更多控制和洞察整个 Google VM 管理模型。它还将确保您可以通过 Google 云 Shell 连接,以防您将来需要再次连接:
在 "Compute Engine" 中转到 VM 部分并 select 您的 VM。在屏幕的左上角是一个 "SSH" 按钮和一个省略号 ("...") 按钮。单击“...”和 select "View gcloud command"。当 window 打开时,将命令复制到剪贴板。然后关闭window,点击屏幕右上角的“>_”(激活Google云Shell)按钮。
加载 shell 时,粘贴命令(使用 Ctrl+V)。尝试连接后,如果您遇到此防火墙问题,它最终会超时。
要显示您正在使用的网络上的防火墙规则,请输入以下内容:
gcloud compute firewall-rules list
要更详细地检查规则,请使用:
gcloud compute firewall-rules describe [rule name]
检查后缀为 "allow-ssh" 的规则,或者更具体地说是打开端口 22 的规则。它可能丢失了。
如果您确实在 "default" 网络上,则可以使用 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."
用您的文字值替换 [网络名称]。
执行后,再次尝试连接命令。它现在应该可以工作了!