【问题标题】:ssh hangs with high latency connection (connecting internationally)ssh 以高延迟连接挂起(国际连接)
【发布时间】:2023-06-27 14:32:01
【问题描述】:

这让我最近的编程非常令人沮丧。

我现在在阿根廷,通过 SSH 连接到美国服务器。可以理解的是,这里的 ping 值要高一些(平均大约 200 毫秒),所以当我通过 SSH 连接到服务器时,每次击键之间都会有明显的延迟。这很好,很容易使用。

不太容易处理的是,大约每 5 分钟左右,SSH 就会完全挂起,大约需要 3-5 分钟才能返回提示。我知道服务器没有陷入困境,因为我可以在等待一个返回时轻松打开几个新连接(实际上这是我能够工作的唯一方法)。当 SSH 终于回来时,我可以看到它实际上一直在后台运行(大文件下载是测试这一点的好方法),但它并没有更新我的屏幕。

有人知道是什么原因造成的吗?

几乎没有其他事实:服务器是 Ubuntu,我正在连接 Mac OS X。我在 SSH 设置中打开了 keepalive。当我按住一个快速发送大量键的键(例如,向左或向右箭头滚动)时,它最有可能挂起。事实上,我可以通过登录并按住像“a”这样的任何键来可靠地重现挂起 - 在挂起之前它永远不会超过一整行的“a”。这只是在我第一次国际连接时开始的,所以我假设它与此有关(延迟?)但不能肯定地说。

【问题讨论】:

    标签: ssh latency freeze


    【解决方案1】:

    奇怪。我不能帮你解决你的问题,但我有一个小窍门可以让它不那么烦人:使用screen(1)。这将使您在另一端的外壳保持活动状态,并且您可以在重新连接后继续您正在做的任何事情。

    如果你只需要在另一端运行命令,我建议将命令作为选项传递给ssh(它将连接,运行命令,显示结果并断开连接)。

    【讨论】:

    • 很好的提示,如果不是一个完整的解决方案。谢谢亚伦。
    • @BrianArmstrong 我同意你的看法。 +1 不过,我一直使用屏幕,如果您必须运行“昂贵”的命令,无论如何它都非常适合多任务处理。
    【解决方案2】:

    我认为阿根廷的 ISP 存在问题。当我使用另一个 ISP 切换到另一个无线网络时,它开始工作。他们可能正在玩一些端口限制游戏,或者谁知道呢。

    【讨论】:

      【解决方案3】:

      尝试调整您的TCP window size

      【讨论】:

      • 嗨 eduffy,我正在阅读这篇文章并尝试了一些东西 (wheel.troxo.com/2008/06/05/tcp-window-scaling-conundrum),例如在我用来连接的 ubuntu 服务器和我的 mac 上禁用 tcp 窗口缩放。到目前为止还没有工作,但我承认我不确定我在做什么。如果您有任何其他提示,那就太好了。感谢您的回复!
      • 其实现在我觉得可能是Mac终端。如果我尝试一次接收大量数据,它会经常从我的 MacBook 上对我这样做(所以我尽量避免cat)。
      • 是的,我知道你的意思是一只长猫会挂起几秒钟等。但这不是……这是在按住一个键后挂起 5 分钟。
      【解决方案4】:

      我习惯于通过高延迟链接进行 ssh - 600 毫秒。它很慢,但我很少遇到任何问题。首先 - 打开另一个终端窗口,ping 您的服务器并观察连接。告诉我们你看到了什么。

      【讨论】:

      • 嗨 Eugene...pings 在第二个终端窗口中很好并且一致。我什至可以打开另一个连接并继续正常工作(直到那个连接挂起)。在所有这些过程中,服务器都处于正常运行状态。
      • @BrianArmstrong 有同样的问题!
      【解决方案5】:

      尝试使用一些详细标志 (ssh -vv[vv] somehost) 进行 SSH,并查看在挂起时是否有任何指示性打印。

      【讨论】:

      • 嗨,bdonlan,是的,这是个好主意。不幸的是,我昨晚在某处阅读了类似的内容后尝试了这个。上升到 3 个 'v',从挂起返回后没有产生任何警告/错误。
      【解决方案6】:

      嗯,我现在连接到不同的无线网络,问题似乎已经消失。我不能确定到底是什么原因造成的(而且我没有无线路由器的登录权限),但这似乎表明它是路由器上的东西,而不是服务器或客户端计算机。

      旧路由器和新路由器都是 Linksys WRT54G 的,所以我不确定问题出在哪里。希望它可以帮助某人!

      【讨论】:

        【解决方案7】:

        我在使用“cat”甚至“ls -l”时遇到了类似的问题,导致 ssh 挂起(在 Ubuntu 上)。将 MTU 大小调整为 1400 为我解决了这个问题。

        【讨论】: