До основного вмісту

SSH працює по TCP чи UDP і чому саме так

Безпека · 13.10.2026 · 4 хв читання
Ілюстрація до статті «SSH працює по TCP чи UDP і чому саме так»

Коротко: SSH працює по TCP, а не по UDP, і це не випадковий вибір розробників, а пряме наслідок того, яке завдання вирішує протокол віддаленого керування сервером. Різниця між TCP і UDP визначає, чому SSH поводиться передбачувано навіть на нестабільному каналі.

SSH працює по TCP

Протокол SSH від самого початку спроєктовано поверх TCP, і він використовує порт 22 саме як TCP-порт. Будь-яке SSH-зʼєднання — це спершу встановлення TCP-сесії з обміном пакетами для синхронізації, і лише потім поверх неї розгортається шифрування і автентифікація самого SSH.

Чому саме TCP, а не UDP

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

ВластивістьTCPUDP
Доставка пакетівГарантована, з повтором за втратиНегарантована
Порядок пакетівЗберігається завждиНе гарантується
Встановлення зʼєднанняТак, через трибічне рукостисканняНі, пакети відправляються одразу
Типове застосуванняSSH, HTTP, передавання файлівDNS, відеопотоки, ігри

Сесія SSH — це безперервний потік команд і їхніх результатів, де втрата чи перестановка пакетів неприпустима: якби частина команди загубилась мовчки, це могло б призвести до виконання спотвореної команди на сервері. TCP бере цю гарантію на себе, і протоколу SSH не потрібно реалізовувати її самостійно.

Порт SSH і як це перевірити

Стандартний порт SSH — 22, і переконатися, що служба слухає саме TCP, можна прямо на сервері.

ss -tlnp | grep ssh
# Приклад виводу:
# LISTEN  0  128  0.0.0.0:22  0.0.0.0:*  users:(("sshd",pid=842,fd=3))

Літера t у прапорці -tlnp якраз означає TCP — для UDP-служб використовують прапорець -u, і у виводі для sshd він нічого не покаже, бо служба на UDP не слухає.

Чи бувають альтернативи SSH поверх UDP

Прямої альтернативи SSH на UDP не існує, та є суміжні інструменти, які використовують UDP заради стійкості до втрати пакетів на мобільних і нестабільних мережах — наприклад, mosh, який поверх UDP синхронізує стан термінала, а не передає потік команд як є. Це окремий протокол, а не версія SSH, і для первинної автентифікації він все одно звертається до звичайного SSH по TCP, що докладно описано в статті про підключення до VDS по SSH.

Що це означає для налаштування файрвола

Оскільки SSH працює по TCP, правило файрвола для порту 22 потрібно писати саме для TCP-трафіку — відкриття того самого номера порту для UDP нічого не дасть і не потрібне. Це варто врахувати під час посилення налаштувань сервера, докладно розібраного в статті про hardening sshd_config, і під час роботи з ключами доступу, описаної в матеріалі про SSH-ключі для VDS.

Що робити: як перевірити і захистити порт SSH

Аби переконатися, що SSH налаштовано правильно і доступно лише тим, кому потрібно, достатньо кількох перевірок.

  1. Перевірте командою ss -tlnp, що sshd слухає порт 22 саме по TCP, а не завис чи не запущений узагалі.
  2. Переконайтесь, що правило файрвола для порту 22 дозволяє TCP-трафік з потрібних адрес, а не блокує його помилково.
  3. Вимкніть вхід за паролем на користь SSH-ключів, якщо це ще не зроблено.
  4. Перевірте журнал підключень на предмет підозрілих спроб входу з незнайомих адрес.

Часті питання

Чи можна змусити SSH працювати по UDP?

Ні, сам протокол SSH визначено поверх TCP, і стандартний sshd не вміє слухати UDP-порт для звичайних сесій. Інструменти на кшталт mosh, які використовують UDP, реалізують власний протокол поверх нього, а не перемикають SSH на інший транспорт.

Чому SSH інколи зависає на нестабільному Wi-Fi?

TCP-зʼєднання SSH тримає стан сесії, і за тривалого розриву мережі воно не відновлюється автоматично — доводиться підключатись наново. Саме для таких умов і зʼявились інструменти поверх UDP, які переживають розрив звʼязку без втрати сесії.

Чи потрібно відкривати UDP-порт 22 у файрволі для SSH?

Ні, це не потрібно і не дасть ефекту: sshd не слухає UDP на жодному порту, тому правило для UDP/22 лишиться мертвим і не вплине на роботу SSH. Достатньо коректного правила для TCP/22.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці