SSH – це протокол безпечного з’єднання, який дозволяє отримувати доступ до віддалених комп’ютерів через мережу.
Комп’ютери обмінюються даними через мережі. Мережеві інженери створили набір правил для взаємодії між пристроями, і в результаті з’явилися такі протоколи, як Telnet. Він дозволяв одному користувачеві керувати іншим комп’ютером.
Однак ці протоколи не були безпечними: будь-хто в мережі міг перехопити та прочитати передані дані. У середині 1990-х років з’явився більш надійний протокол під назвою SSH, який став безпечною альтернативою Telnet.
Якщо ви розробник програмного забезпечення або системний адміністратор, ви, ймовірно, хоча б раз використовували SSH. Якщо ні, давайте розглянемо його зараз, оскільки це одна з ключових навичок у цій сфері.
Що являє собою SSH?
SSH, або Secure Shell (безпечна оболонка), – це мережевий протокол, який дозволяє безпечно підключатися до віддалених пристроїв, найчастіше серверів.
Він забезпечує надійне шифрування і широко застосовується мережевими адміністраторами та розробниками для керування віддаленими системами, виконання команд, обміну файлами та інших операцій.
Чому потрібен SSH?
SSH був розроблений у 1995 році для вирішення проблем безпеки, пов’язаних з небезпечними протоколами віддаленого доступу, такими як rlogin, rsh і Telnet.
Давайте поговоримо про Telnet, що розшифровується як Teletype Network, розроблений у 1969 році. Це простий інструмент командного рядка, який використовується для доступу до віддаленого сервера з будь-якої точки світу. Ви можете надсилати команди на цей сервер, ніби ви сидите прямо за ним. Telnet передає і отримує повідомлення у вигляді відкритого тексту.
За допомогою команд можна запускати програми, створювати каталоги, створювати, видаляти або передавати файли, запускати або зупиняти служби тощо.
Проблема полягає в тому, що дані, що передаються через мережу, можуть проходити через багато точок, деякі з яких можуть бути небезпечними. Дані можуть бути перехоплені або змінені перед тим, як вони досягнуть кінцевого призначення.
На початку, коли безпека не була пріоритетом, спілкування велося відкритим текстом. Дані, що передавалися між клієнтом і сервером через інтернет, можна було легко перехопити та прочитати, оскільки вони не шифрувалися.
Протоколи відкритого тексту дуже небезпечні, і їх не можна використовувати для передачі конфіденційних даних, таких як паролі. Тому SSH вважається надійним варіантом замість застарілих протоколів віддаленого доступу.
Як це працює?
SSH використовує архітектуру клієнт-сервер для безпечного зв’язку через мережу. Клієнт SSH підключається до SSH-сервера. За замовчуванням SSH-сервер використовує порт TCP 22, хоча це можна змінити для підвищення безпеки.
Для аутентифікації між клієнтом і сервером використовується криптографія з відкритим ключем. Крім того, протокол застосовує надійне симетричне шифрування та алгоритми хешування для обміну повідомленнями, щоб гарантувати конфіденційність і цілісність даних.
Linux є популярною операційною системою для віддалених серверів через свою безпеку та стабільність. Багато серверів на Linux працюють роками без перезавантажень або збоїв.
Більшість SSH-сеансів (час, протягом якого є доступ до віддаленого сервера) складається з двох основних операцій:
- Аутентифікація
- Виконання команди
SSH-сервери можуть використовувати різні методи для аутентифікації клієнтів.
Два найпоширеніші способи:
Аутентифікація за паролем є стандартним методом аутентифікації для клієнтів OpenSSH. Це найпростіший, але не найбезпечніший спосіб аутентифікації SSH.
Навіть якщо паролі надсилаються на сервер безпечно, сучасні атаки можуть обійти цей метод.
Аутентифікація на основі ключів підвищує безпеку системи за допомогою SSH-ключів, що є надійним і безпечним методом.
Після успішної аутентифікації між клієнтом і сервером встановлюється безпечне з’єднання.
Як отримати доступ до віддаленого сервера за допомогою SSH
Користувачі macOS і Linux можуть використовувати термінал для введення команд SSH, оскільки OpenSSH встановлений за замовчуванням.
Користувачі Windows повинні встановити клієнт терміналу стороннього виробника для запуску команд SSH. PuTTY – найпопулярніший клієнт SSH для Windows.
Щоб підключитися до віддаленого сервера через SSH, потрібно знати принаймні дві речі.
Синтаксис базової команди SSH виглядає так:
$ ssh <user-name>@<host> -p <port-no>
Ім’я користувача – це ім’я користувача віддаленого комп’ютера, до якого ви намагаєтеся підключитися (а не ім’я користувача на вашому локальному комп’ютері), а хост – це IP-адреса або доменне ім’я.
Розглянемо приклад підключення до віддаленого сервера за допомогою OverTheWire. Це безкоштовний веб-сайт із завданнями з кібербезпеки.
Підключимося до завдання bandit через SSH. Це одне із завдань, яке навчає входу за допомогою SSH.
Дані для входу:
Ім’я користувача і пароль: bandit0
хост і порт: bandit.labs.overthewire.org, 2220
Введіть наступну команду і натисніть Enter:
$ ssh [email protected] -p 2220
Система запросить введення пароля для аутентифікації. Введіть пароль і натисніть Enter:
Якщо пароль введений правильно, ви успішно увійшли на віддалений сервер, і ваш термінал виглядатиме як на зображенні вище.
Тепер ви можете використовувати термінал віддаленого комп’ютера для введення команд і виконання необхідних дій.
Щоб завершити сеанс SSH, введіть команду виходу:
$ exit
Після успішного виходу з SSH-сеансу ви отримаєте повідомлення “З’єднання закрито”.
Висновок
Головна причина популярності SSH – це шифрування всіх даних між сервером і клієнтом.
Багато хто вважає SSH складним для розуміння, але насправді все простіше, ніж здається. Тепер ви маєте базові знання про SSH, його принцип роботи, аспекти безпеки та чому він відіграє важливу роль у мережевому з’єднанні.
Вивчіть додаткові матеріали, щоб стати системним адміністратором.