Я использую Perl-скрипт (с пакетом Semaphore), чтобы запускать длительные команды ssh для экземпляров AWS. По нескольким причинам я НЕ запускаю команды ssh в фоновом режиме.
Недавно строительная бригада перерезала волокно Comcast для нашего офисного здания. Мы поддерживаем резервное соединение CenturyLink, а наши ИТ-специалисты переключили наше офисное соединение на CenturyLink.
Мои процессы ssh умерли с сообщением «Тайм-аут, сервер не отвечает», когда мы переключились с Comcast на CenturyLink. Они снова умерли, когда мы снова переключились на Comcast после ремонта волокна.
Ожидается ли такое поведение команды open ssh при изменении локального общедоступного IP-адреса? Если я помещу команды ssh в фоновый режим, решит ли это эту проблему?
Да, это ожидаемое поведение. В конце концов, ваше соединение было прервано физически.
Если прерывание вашего соединения может привести к сбою длительного удаленного процесса, рассмотрите возможность его запуска в tmux
сеанс.
Если вы не хотите запускать команды ssh в фоновом режиме (вручную), вы можете указать mosh
(мобильная оболочка) попробовать. Он доступен, вероятно, для любого дистрибутива и системы, включая различные BSD, Android, Windows и macOS.
Да нормально.
Сервер TCP идентифицирует соединение по комбинации локального адреса, локального порта, удаленного адреса и удаленного порта.
Поскольку вы говорите об «изменении локального публичного IP-адреса», я предполагаю, что ваше рабочее место использует некоторую форму NAT для сопоставления частных адресов в вашей локальной сети с одним или несколькими общедоступными адресами в текущем интернет-соединении.
В зависимости от того, как именно реализован NAT, существует несколько возможностей того, что именно может произойти на уровне пакетов, но для обычного TCP все они заканчиваются сбоем TCP-соединения.
Существует расширение под названием «multipath TCP», которое (среди прочего) позволяет поддерживать соединения при изменении сети, но для его использования между Linux-системами в настоящее время по-прежнему требуются сторонние модули ядра.