【问题标题】:Google Cloud VM instance SSH connection ~60 seconds timeout with 30 second keepaliveGoogle Cloud VM 实例 SSH 连接 ~60 秒超时,30 秒保活
【发布时间】:2018-08-16 13:20:50
【问题描述】:

我一直在我的 macOS 上通过 gcloud ssh 连接到 Google Cloud VM 实例:

$ gcloud compute ssh [username]@[instance]

从一周前开始,连接会在大约 60 秒的空闲连接后断开并返回:

Connection to [my_external_ip] closed by remote host.
Connection to [my_external_ip] closed.
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].

我在我的 macbook 和 VM 上都将 TCP keepalive 时间配置为 30 秒。但这并没有解决问题。

知道如何延长连接持续时间吗?

【问题讨论】:

    标签: ssh google-cloud-platform google-compute-engine gcloud tcp-keepalive


    【解决方案1】:

    这不太可能是您的超时设置问题,但更可能是您的防火墙规则或路由问题。

    首先我建议检查您的防火墙规则并确保您有一个打开端口 22 的入口防火墙规则。如果有,请检查此规则的配置,特别是:

    • 检查“源过滤器”中的 IP 范围。该范围是否包括您家用计算机的 IP 地址?出于测试目的,为确保它确实如此,您可以暂时将其设置为 0.0.0.0/0 以包括所有 IP 地址。

    • 检查“目标”下拉菜单。此设置是应用于“网络中的所有实例”还是设置为“指定的目标标签”?如果您已将其设置为“指定的目标标签”,请确保将相同的标签添加到实例的“网络标签”部分,否则防火墙规则将不适用于实例并允许 SSH 流量。

    • 1234563 20000 的优先级)。

    如果上述方法不能解决问题,请运行以下命令检查路由:

    gcloud compute routes list
    

    确保有一个条目包含以下内容:

     default          0.0.0.0/0       default-internet-gateway 
    

    编辑

    如果您有时能够通过 SSH 连接到实例,但随后连接断开,则日志或串行控制台中可能会有一些有用的信息。

    您可以通过单击 GCP Console 中的实例名称,然后单击“串行端口 1”来访问串行控制台。 当您通过 SSH 连接到实例时,有关 SSH 会话的信息会填充串行控制台输出(可以通过点击页面顶部的“刷新”来刷新)。有关会话结束的信息也会填充串行控制台。关于会话为何在此输出中结束,可能有一些有用的信息/线索。

    检查实例上 SSH 守护程序的状态并重新启动它以查看是否有影响可能也是值得的:

    查看sshd的状态:

    systemctl status sshd
    

    重启sshd:

    sudo systemctl restart sshd
    

    【讨论】:

    • 连接到实例没有问题。我的问题是我无法通过 SSH 保持连接超过 60 秒。我检查了您建议的所有内容,它们都很好。知道为什么我无法保持联系吗?
    • 我在我的回答中添加了一些额外的信息,请随时将与 ssh 相关的任何串行控制台输出/日志附加到您的问题中,我会看看(确保您不透露任何敏感信息)。
    • 感谢您的回答。现在连接以某种方式稳定了,所以我在串口日志中找不到任何错误。不过感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2015-11-14
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多