0% прочитано

Як автоматичні SSH-тунелі можуть заблокувати доступ до власного сервера

SSH може перестати приймати нові підключення, хоча сервер доступний, сайт працює, а sshd активний. Одна з неочевидних причин - автоматичні тунелі, які після розриву з’єднання перепідключаються занадто часто й потрапляють під UFW LIMIT.

29 жовтня 2026 р. 7 хв читанняDevOps

Іноді SSH перестає працювати, хоча сервер доступний, вебсайт відкривається, а сам SSH-сервіс активний.

У такій ситуації причина може бути не в збої сервера, а в захисних правилах firewall.

Один із практичних сценаріїв - автоматичні SSH-тунелі після втрати з’єднання намагаються відновити його занадто часто. Якщо сервер використовує UFW із правилом LIMIT для SSH, серія повторних спроб може призвести до відхилення нових підключень з тієї самої IP-адреси.

Працюючий сайт і активний sshd не доводять, що нові SSH-підключення не блокуються firewall.

1. Перевірка блокувань UFW

Пошук блокувань SSH через UFW LIMIT
sudo journalctl -k --since "1 hour ago" --no-pager \    | grep 'UFW LIMIT BLOCK' \    | grep 'DPT=22' \    | tail -20

Повідомлення [UFW LIMIT BLOCK] для порту 22 підтверджують, що firewall відхиляє нові підключення через обмеження частоти.

Це важлива межа діагностики: сервер не "впав", а захист свідомо не приймає частину нових спроб.

2. Перевірка автоматичних SSH-тунелів

Перевірка стану служби тунелю
systemctl --user show my-ssh-tunnel.service \    -p ActiveState \    -p NRestarts \    -p RestartUSec

Велика кількість перезапусків разом із коротким інтервалом між ними може пояснювати постійні спроби підключення.

Кожна спроба окремо є нормальною, але серія дуже швидких перепідключень починає конфліктувати із захисним обмеженням сервера.

Автоматичне відновлення саме може створити проблему

Автоматичний тунель потрібен саме для надійності: якщо з’єднання розірвалося, служба повинна підняти його знову.

Але без достатньої паузи короткий мережевий збій може створити цикл: тунель падає, systemd майже одразу запускає SSH знову, мережа ще не відновилася, служба знову падає, а наступна спроба приходить через кілька секунд.

Після серії таких підключень UFW LIMIT може почати блокувати вже й ручний адміністративний вхід.

3. Збільшення інтервалу перепідключення

Більша пауза перед автоматичним перезапуском
[Service]Restart=on-failureRestartSec=90s

Тут важливі не конкретні 90 секунд, а сам принцип: повторні спроби не повинні йти настільки часто, щоб конфліктувати з серверним обмеженням частоти.

Перечитування конфігурації без зайвого перезапуску тунелю

Перечитування конфігурації systemd
systemctl --user daemon-reload

daemon-reload дозволяє systemd перечитати змінені unit-файли без примусового перезапуску активного тунелю.

Новий RestartSec буде використаний під час наступного автоматичного перезапуску служби.

Перевірка результату

Після збільшення інтервалу потрібно перевірити дві окремі речі: нові адміністративні SSH-підключення знову проходять, а автоматичні тунелі залишаються активними.

Виправлення не повинно полягати у вимкненні самого механізму, заради якого тунелі були створені.

Базова перевірка служби та портів
systemctl --user is-active \    my-ssh-tunnel.service ss -lnt

Не починайте з послаблення firewall

Якщо UFW LIMIT спрацював через агресивний цикл перепідключення, послаблення захисту лікує симптом, а не причину.

У такому сценарії не потрібно вимикати UFW, прибирати захисне правило або перезавантажувати сервер лише для того, щоб відновити SSH.

Спочатку варто зменшити частоту автоматичних спроб і перевірити результат.

Для складніших сценаріїв використовуйте поступове збільшення затримки

Фіксований RestartSec добре підходить для простого тунелю.

Якщо з’єднання може бути недоступним довше, корисно поступово збільшувати паузу після кожної невдалої спроби, наприклад 10, 30, 60 і 120 секунд із верхньою межею.

Це зменшує навантаження під час тривалого збою і не створює нескінченного потоку нових SSH-підключень.

Головний висновок

Автоматичне відновлення з’єднання теж потребує обмежень.

Надто агресивні повторні спроби можуть конфліктувати із захистом сервера і фактично заблокувати адміністратора.

Для SSH-тунелів варто налаштовувати достатню затримку між спробами, а для складніших сценаріїв - поступове збільшення цієї затримки.

Механізм автоматичного відновлення не повинен створювати більше повторних підключень, ніж захисний шар сервера готовий прийняти.