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

почему мои сеансы ssh зависают через некоторое время?

Приносим извинения, если это не подходящее место для того, чтобы задавать этот вопрос.

Мне регулярно нужно использовать ssh на разных серверах. Теперь с моей домашней машины (linux mint), когда я подключаюсь через ssh, после некоторого времени бездействия моя оболочка ssh зависает, и нет возможности вернуть ее. Единственное, что я могу сделать, это '~. ", Что по крайней мере вернет мне мою исходную оболочку.

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

Это действительно раздражает, так как мне нужно восстановить ssh-соединения после зависания, вернуться туда, где я был, и продолжить работу. Спасибо

Ваш NAT отключает ваш TCP-сокет после периода бездействия.

Ваш ssh-клиент может при желании отправлять периодические запросы на сервер, тем самым устраняя эту проблему. Для этого добавьте это в свой ~/.ssh/config:

Host *
  ServerAliveInterval 60

В качестве альтернативы можно перенастроить NAT, чтобы не удалять элементы из таблицы состояний так же быстро, как сейчас.


В дополнение к вышесказанному вы должны использовать для своих сеансов терминальный мультиплексор - что-то вроде GNU Screen или tmux. С помощью любого из них вы можете восстановить сеанс в случае отключения.

В моем случае проблема заключалась в большом размере MTU. Вы можете изменить MTU на маршрутизаторе, если используете NAT, но я меняю MTU на сервере:

sudo /sbin/ifconfig eth0 mtu 1036
sudo /etc/init.d/networking restart

В Windows вы также можете увеличить этот ключ:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpMaxDataRetransmissions"=dword:00000010