Приносим извинения, если это не подходящее место для того, чтобы задавать этот вопрос.
Мне регулярно нужно использовать 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