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

10

Извиняюсь, если это не то место, где можно задать этот вопрос.

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

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

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

кокколитофориды
источник
У вас есть статический IP-адрес? Если нет, возможно, ваш Интернет-провайдер дал вам другой IP-адрес в середине сеанса - проверьте ваши журналы и посмотрите.
user9517
У меня нет статического IP-адреса. Проверим
coccolithophore

Ответы:

20

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

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

Host *
  ServerAliveInterval 60

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


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

EEAA
источник
Либо NAT, либо любой ужасно неправильный брандмауэр на пути, который любит сбрасывать бездействующие сеансы TCP. Нет никаких причин сбрасывать бездействующие сеансы TCP, кроме нехватки памяти для сохранения состояний, но это должно происходить очень редко, если вы правильно настроили размер и сконфигурировали оборудование. Полезно знать, компетентен ли ваш провайдер / администратор (или нет).
zerodeux
0

В моем случае проблема была в большом размере 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
Васин Юрий
источник