这不太可能是您的超时设置的问题,但更可能是您的防火墙规则或路由的问题。
首先,我建议检查您的防火墙规则并确保您有一个打开端口 22 的入口防火墙规则。如果有,请检查此规则的配置,特别是:
检查“源过滤器”中的 IP 范围。该范围是否包括您家用计算机的 IP 地址?出于测试目的,为确保它确实如此,您可以暂时将其设置为 0.0.0.0/0 以包括所有 IP 地址。
检查“目标”下拉菜单。此设置是应用于“网络中的所有实例”还是设置为“指定的目标标签”?如果您已将其设置为“指定的目标标签”,请确保将相同的标签添加到实例的“网络标签”部分,否则防火墙规则将不适用于实例并允许 SSH 流量。
确保此规则具有比任何其他可以抵消它的规则更高的优先级(当我说更高的优先级时,我的意思是更低的数字,例如,优先级为 1000 的规则比优先级为 20000 的规则具有更高的优先级)。
如果上述方法不能解决问题,请运行以下命令检查路由:
gcloud compute routes list
确保有一个包含以下内容的条目:
default 0.0.0.0/0 default-internet-gateway
编辑
如果您有时能够通过 SSH 连接到实例,但随后连接断开,则日志或串行控制台中可能有一些有用的信息。
您可以通过单击 GCP Console 中的实例名称,然后单击“Serial port 1”来访问串行控制台。当您通过 SSH 连接到实例时,有关 SSH 会话的信息会填充串行控制台输出(可以通过点击页面顶部的“刷新”来刷新)。有关会话结束的信息也会填充串行控制台。关于会话为何在此输出中结束,可能有一些有用的信息/线索。
检查实例上 SSH 守护程序的状态并重新启动它以查看是否有区别可能也是值得的:
检查 sshd 的状态:
systemctl status sshd
重启sshd:
sudo systemctl restart sshd