Назад | Перейти на главную страницу

Что произойдет с процессом ssh, если изменится локальный IP-адрес?

Я использую 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-системами в настоящее время по-прежнему требуются сторонние модули ядра.