Час очікування SSH для Linux [закрито]


10

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

У мене в офісі є коробка CentOS. Підключитися до SSH не можу доторкнутися до нього протягом 2 годин, і він все ще живе, коли я щось запускаю.

Однак підключіть до цього самого вікна в домашніх умовах, і час від часу буде через декілька секунд, а іноді через пару хвилин.

Я б подумав, що це мій Інтернет, але якщо я активно використовую вікно, він залишатиметься на зв’язку.

Однак якщо я перестану вводити щось у google, воно покаже відключене повідомлення, і мені доведеться знову підключитися.

Що я можу перевірити, щоб побачити, що відбувається?


4
Документація для вашого (безіменного) клієнта.
користувач9517

Відповіді:


14

Перше, на що слід звернути увагу - це налаштування ServerAliveInterval. Це слід встановити на робочій станції.

Для клієнтів Linux або OSX ви можете створити файл конфігурації для свого користувача під ~ / .ssh / config на робочій станції. Додайте наступну директиву. У моєму випадку я хочу, щоб це вплинуло на всі хости, тому я ставлю його під Host *.

Host *
    ServerAliveInterval 60

Це надсилатиме команду noop кожні 60 секунд, щоб зберегти з'єднання відкритим. Ви можете налаштувати цінність, щоб задовольнити свої потреби.

На стороні сервера переконайтесь, що для TCPKeepAlive встановлено значення "Так".

grep TCPKeepAlive /etc/ssh/sshd_config
TCPKeepAlive yes

Якщо ви працюєте в Windows, вам потрібно буде посилатися на документацію для свого клієнта.


11

Linux не вичерпує непрацюючі SSH-з'єднання. Ви можете залишити SSH-з'єднання відкритим на невизначений термін, і поки жодна кінцева точка не перезавантажена або отримано нову IP-адресу, з’єднання все ще працюватиме, коли ви отримаєте доступ до нього після тривалого простою.

Однак якщо є якісь середні скриньки (NAT, брандмауер тощо), вони, ймовірно, можуть вичерпати неробочі з'єднання. Результатом цього є те, що хоча з'єднання є живим на обох кінцях, дві кінцеві точки більше не можуть спілкуватися, оскільки середня скринька відмовляється пересилати будь-які пакети, поки клієнт SSH не відкриє нове з'єднання.

Якщо ви знаєте , тайм - аут middlebox, ви можете обійти цю проблему шляхом настройки ClientAliveIntervalв /etc/ssh/sshd_configна сервері або ServerAliveIntervalв ~/.ssh/configна клієнті. Для оптимального виявлення порушених з'єднань доцільно включити обидва налаштування. Це також виявить порушені з'єднання, коли будь-яка кінцева точка була перезавантажена або отримала нову IP-адресу.

Оскільки ви вказуєте на те, що час очікування іноді здається на кілька секунд, це може бути недостатньо для вирішення вашої проблеми. Дуже низький очевидний час очікування може бути викликаний перевантаженою або неправильно налаштованою CGN. Вам потрібно оглянути трафік у різних точках шляху зв'язку, щоб з’ясувати, чи відповідає CGN за збої.

Якщо виявиться, що збої спричинені тим, що ваш Інтернет-провайдер робить щось нерозумне, наприклад, навантаження на балансування завантаження через декілька CGN, які не поділяють стан з'єднання, ви не зможете самостійно усунути проблему, просто налаштувавши вашу конфігурацію SSH.

Якщо у вас застряг Інтернет-провайдер із ненадійною мережевою мережею, яку вони відмовляються виправити, єдині мені відомі варіанти - або оновити як клієнтські, так і серверні версії ядра з підтримкою MPTCP або використовувати тунельне рішення, розроблене для того, щоб миритися з спонтанним. зміни в картах портів на NAT.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.