如果本地 IP 地址发生变化,ssh 进程会发生什么情况?

如果本地 IP 地址发生变化,ssh 进程会发生什么情况?

我使用 perl 脚本(带有 Semaphore 包)向 AWS 实例发出长时间运行的 ssh 命令。出于多种原因,我不会在后台运行 ssh 命令。

最近,施工队切断了通往我们办公楼的康卡斯特光纤。我们保留了备用 CenturyLink 连接,我们的 IT 人员将办公室连接切换到 CenturyLink。

当我们从 Comcast 切换到 CenturyLink 时,我的 ssh 进程因出现“超时,服务器无响应”消息而终止。当我们在光纤修复后切换回 Comcast 时,它们再次终止。

如果本地公共 IP 地址发生变化,这是打开 ssh 命令的预期行为吗?如果我将 ssh 命令放在后台,是否可以解决这个问题?

答案1

是的,这是预期行为。毕竟,您的连接已物理中断。

如果连接中断可能导致长时间运行的远程进程失败,请考虑在会话中运行它tmux

答案2

如果您不想在后台(手动)运行 ssh 命令,您可以尝试mosh(移动 shell)。它适用于任何发行版和系统,包括各种 BSD、Android、Windows 和 macOS。

答案3

是的,很正常。

TCP 服务器通过本地地址、本地端口、远程地址和远程端口的组合来识别连接。

由于您谈到“本地公共 IP 地址变化”,我推测您的工作场所使用某种形式的 NAT 将 LAN 上的私有地址映射到当前互联网连接上的一个或多个公共地址。

根据 NAT 的具体实施方式,在数据包级别可能发生的情况有几种可能性,但对于常规 TCP 而言,所有情况都会导致 TCP 连接失败。

有一个名为“多路径 TCP”的扩展,它(除其他功能外)允许在网络变化时维持连接,但据我所知,在 Linux 机器之间使用它目前仍然需要第三方内核模块。

相关内容