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

Mor*_*own 11 ssh perl

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

最近,我们办公楼的康卡斯特光纤被施工人员切断。我们维护了一个备份 CenturyLink 连接,我们的 IT 人员将我们的办公室连接切换到 CenturyLink。

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

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

Mic*_*ton 20

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

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

  • @ user253751 OP 光纤中断并开始使用他们的备份 ISP。我会认为这是身体上的中断。 (10认同)
  • Tmux 真的非常好用。花时间学习它是非常值得的,尤其是当您通过 `ssh` 运行长时间运行的作业时。我强烈推荐它。 (4认同)
  • @MorganBrown 如果要重新连接到会话,可以使用 tmux。你不能用 nohup 做到这一点。 (2认同)

小智 14

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

  • @chicks 是的,mosh(“移动外壳”)可以优雅地处理连接断开甚至客户端 IP 更改(例如,如果客户端是移动设备切换基站)。它利用UDP来做到这一点。 (7认同)