SSH-подобный сеанс, который выдерживает физическое сетевое отключение

SSH-подобный сеанс, который выдерживает физическое сетевое отключение

Я хочу, чтобы мой сеанс входа SSH оставался подключенным после того, как компьютер переходит в спящий режим и просыпается. Насколько я понимаю, TCP может выдерживать периодические сетевые проблемы, так что могу ли я изменить настройки так, чтобы он мог выдерживать несколько часов или дней? Если нет, есть ли что-то похожее на SSH, что может это сделать?

Я понимаю, что могу настроить SSH на автоматическое повторное подключение, когда сеть снова станет доступной. Но это не идеально, потому что я хочу, чтобы мой сеанс входа был точно в том же месте, где он был до того, как ноутбук ушел в спящий режим (даже если он наполовину вводит что-то в командной строке оболочки).

Я понимаю, что есть и другиеобходные пути, но я надеялся, что есть способ избежать потери сеанса оболочки в первую очередь.

решение1

TCP-соединение должно выдерживать отключение, но некоторые чрезмерно усердные брандмауэры могут разрывать неиспользуемые соединения, и оно не выдержит смены вашего IP-адреса, если это вообще возможно.

Для интерактивных сессий я бы запустилМош. Он реализует терминальное соединение типа SSH через UDP, поддерживает повторное подключение с другого IP-адреса при необходимости и имеет некоторые функции для поддержки нестабильных соединений.

Независимо от того, решите ли вы использовать SSH или Mosh, используйтеэкранилиtmuxтакже сделать ваш сеанс независимым от соединения.

решение2

screenили tmuxопределенно являются правильным путем. sshТогда соединение становится лишь средством достижения цели, и больше не имеет значения (в разумных пределах), как часто оно обрывается во время простоя.

Если вас беспокоит необходимость помнить о запуске сеанса screenпри входе на удаленный сервер, не составит труда автоматически подключить интерактивный сеанс к существующему screenили начать новый, если он еще не запущен.

решение3

Горные породы(Reliable sOCKetS) — это оболочка для программ, которые устанавливают клиентские TCP-соединения, которая обнаруживает сбой TCP-соединения и автоматически переподключает клиента, даже если он переместился в другую сеть. Она была описана в статьеНадежные сетевые соединенияи являетсядоступно для скачивания. Он не поддерживается, но использует довольно стабильные интерфейсы, поэтому должен работать и сегодня. Он использует предварительную загрузку библиотеки ( LD_PRELOAD) для затенения стандартных библиотечных функций, поэтому он работает только с динамически связанными исполняемыми файлами. Вы просто запускаете его как

rocks ssh …

Rocks управляет мобильностью клиента, а не мобильностью сервера. Если сервер перемещается, вы можете захотеть дополнить егоНОСКИпрокси.

Для интерактивного сеанса хорошей альтернативой являетсяМош. Он разработан для ненадежных соединений и поддерживает мобильность клиентов. Mosh теряет данные, если соединение ненадежно, поэтому его можно использовать только для интерактивных сеансов.

Альтернативой Mosh, если у вас в основном надежное, но иногда нестабильное соединение, являетсяавтосшдля автоматического повторного подключения иэкранилиtmuxзапущен на сервере. Сеанс screen/tmux остается на сервере, даже если клиент отключается, и autossh автоматически переподключается, если соединение обрывается.

Связанный контент