Я открыл telnet-соединение с другим сервером, однако, когда я закрываю PuTTY, все еще кажется, что я вошел в другой терминал. Я думаю, это происходит каждый раз, когда PuTTY бездействует. Кто-нибудь знает, как этого избежать? Я пробовал убить процесс и перезагрузить компьютер, но все равно то же самое, и я могу гарантировать, что никто другой не вошел в систему с этой учетной записью.
решение1
Это звучит каксервер находится за брандмауэром, который слишком строг. Когда соединение простаивает слишком долго, брандмауэр «забывает» его и удаляет из таблицы состояний – хотя уровень TCP на обоих хостах по-прежнему считает соединение активным.
Когда это происходит, брандмауэр больше не пропускает никакие пакеты, относящиеся к соединению — ни обычные пакеты данных, ни даже пакеты TCP FIN или TCP RST, которые должны указывать на то, что соединение закрыто.
(Обычно этот тайм-аут следует устанавливать напо меньшей мере(Несколько часов для TCP-соединений, но некоторые поставщики, например Mikrotik RouterOS, по умолчанию устанавливают очень короткие тайм-ауты.)
Как пользователь, вы можете попробовать включить функции «keepalive» в PuTTY в качестве обходного пути, т. е. отправлять фиктивные пакеты, чтобы брандмауэры думали, что соединение все еще используется:
Связь→Секунды между сообщениями keepalive:что-то вроде 60 или 300 секунд. (Здесь используются пакеты, специфичные для протокола, но этодолженработа для Telnet.)
Связь→Низкоуровневые параметры TCP→ [✔]Включить TCP-поддержки активности(Это работает для любого протокола, но не позволяет указать, как часто отправлять пакеты keepalive; это может быть диапазон часов.)