Налаштування SSH в Ubuntu

Технологія SSH (Secure Shell) дозволяє проводити безпечне віддалене управління комп'ютером через захищене з'єднання. SSH здійснює шифрування всіх файлів, що передаються, включаючи паролі, а також передає абсолютно будь-який мережевий протокол. Для коректної роботи інструменту його необхідно не тільки встановити, але ще і налаштувати. Саме про твір головною конфігурації ми і хотіли б поговорити в рамках даної статті, взявши за приклад останню версію операційної системи Ubuntu, на якій буде розташовуватися сервер.

Налаштовуємо SSH в Ubuntu

Якщо ви ще не виконали інсталяцію на серверний і клієнтський ПК, слід це зробити спочатку, благо здійснюється вся процедура досить просто і не займе багато часу. З детальним керівництвом по цій темі знайомтеся в інший нашій статті за наступним посиланням. У ній також показана процедура редагування файлу конфігурації і тестування роботи SSH, тому сьогодні ми зупинимося трохи на інших завданнях.

Детальніше: Установка SSH-server в Ubuntu

Створення пари ключів RSA

У щойно встановленому SSH ще немає заданих ключів для здійснення підключення від сервера до клієнта і навпаки. Всі ці параметри необхідно задати вручну відразу ж після додавання всіх компонентів протоколу. Пара ключів працює за допомогою алгоритму RSA (скорочення від прізвищ розробників Rivest, Shamir і Adleman). Завдяки цій криптосистеме через спеціальні алгоритми проводиться шифрування ключів. Для створення пари відкритих ключів вам потрібно лише ввести відповідні команди в консоль і слідувати з'явилися інструкцій.

  1. Перейдіть до роботи з «Терміналом» будь-яким зручним методом, наприклад, відкривши його через меню або комбінацію клавіш Ctrl + Alt + T.
  2. Запустити термінал в Ubuntu для подальшої настройки SSH

  3. Введіть команду ssh-keygen , а потім натисніть на клавішу Enter.
  4. Створити ключ SSH через консоль в операційній системі Ubuntu

  5. Буде запропоновано створити файл, куди збережуться ключі. Якщо бажаєте залишити їх в розташуванні, обраному за замовчуванням, просто натисніть на Enter.
  6. Вибрати файл для збереження ключів протоколу SSH в Ubuntu

  7. Відкритий ключ може бути захищений кодовою фразою. Якщо хочете використовувати цю опцію, в рядку, що з'явився напишіть пароль. Зауважте, що ви при цьому відображатися не будуть. У новому рядку потрібно його повторити.
  8. Введення ключової фрази при створенні ключа SSH в Ubuntu

  9. Далі ви побачите повідомлення про те, що ключ був збережений, а також зможете ознайомитися з його випадковим графічним зображенням.
  10. Успішне створення ключів для SSH в операційній системі Ubuntu

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

Копіювання відкритого ключа на сервер

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

Варіант 1: Команда ssh-copy-id

Команда ssh-copy-id вбудована в операційну систему, тому для її виконання не потрібно встановлювати ніяких додаткових компонентів. Дотримуйтесь простий синтаксис, щоб скопіювати ключ. У «Терміналі» необхідно ввести ssh-copy-id username@remote_host , де username @ remote_host - ім'я віддаленого комп'ютера.

Скопіювати ключ SSH через спеціальну утиліту в Ubuntu

При першому підключенні ви отримаєте повідомлення текстом:

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Треба вказати варіант yes для продовження з'єднання. Після цього утиліта самостійно займеться пошуком ключа у вигляді файлу id_rsa.pub , який був створений раніше. Якщо виявлено відобразиться такий результат:

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Вкажіть пароль від віддаленого хоста, щоб утиліта змогла увійти в нього. Інструмент буде копіювати дані з файлу публічного ключа ~ / .ssh / id_rsa.pub, а після цього на екрані з'явиться повідомлення:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key (s) you wanted were added.

Поява такого тексту означає, що ключ був успішно завантажений на віддалений комп'ютер, і тепер не виникне ніяких проблем із з'єднанням.

Варіант 2: Копіювання відкритого ключа через SSH

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

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys" cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys" .

Передати скопійований ключ через спеціальну утиліту Ubuntu

При появі повідомлення

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

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

Варіант 3: Ручне копіювання відкритого ключа

У разі відсутності доступу до віддаленого комп'ютера через SSH-сервер, всі описані вище дії виконуються вручну. Для цього спочатку пізнається інформація про ключі на серверному ПК через команду cat ~/.ssh/id_rsa.pub .

Переглянути інформацію про ключі через команду cat в Ubuntu

На екрані буде відображена приблизно такий рядок: ssh-rsa + ключ в виде набора символов== demo@test . Після цього перейдіть до роботи на віддалений пристрій, де створіть нову директорію через mkdir -p ~/.ssh . У ній додатково створюється файл authorized_keys . Далі вставте туди ключ, який ви дізналися раніше через echo + строка публичного ключа >> ~/.ssh/authorized_keys . Після цього можна пробувати проводити аутентифікацію з сервером без використання паролів.

Аутентифікація на сервері через створений ключ

У попередньому розділі ви дізналися про трьох методах копіювання ключа віддаленого комп'ютера на сервер. Такі дії дозволять підключитися без використання пароля. Виконується ця процедура через командний рядок шляхом введення shh ssh username@remote_host , де username @ remote_host - ім'я користувача і хост потрібного комп'ютера. При першому підключенні ви будете повідомлені про незнайомому з'єднанні і можете продовжувати грати, обравши варіант yes.

Підключитися до віддаленого комп'ютера через SSH в Ubuntu

Підключення відбудеться автоматично, якщо під час створення пари ключів не була задана ключова фраза (passphrase). В іншому випадку спочатку доведеться ввести її, щоб продовжити роботу з SSH.

Відключення аутентифікації по паролю

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

  1. У «Терміналі» відкрийте конфігураційний файл через редактор за допомогою команди sudo gedit /etc/ssh/sshd_config .
  2. Запустити конфігураційний файл SSH через редактор в Ubuntu

  3. Знайдіть рядок «PasswordAuthentication» і приберіть знак # на початку, щоб розкоментувати параметр.
  4. Розкоментувати рядок з аутентифікацією по паролю в Ubuntu

  5. Змініть значення на no і збережіть поточну конфігурацію.
  6. Відключити аутентифікацію за паролем в SSH через Ubuntu

  7. Закрийте редактор і перезапустіть сервер sudo systemctl restart ssh .
  8. Перезапустити сервер SSH в операційній системі Ubuntu

Аутентифікація по паролю відключиться, і увійти на сервер можна буде тільки з використанням спеціально створених для цього ключів з алгоритмом RSA.

Налаштування стандартного firewall

В Убунту мережевий захистом за замовчуванням виступає фаєрвол Uncomplicated Firewall (UFW). Він дозволяє дозволяти підключення для обраних сервісів. Кожна програма створює свій профіль в цьому інструменті, а UFW управляє ними, дозволяючи або забороняючи підключення. Налаштування профілю SSH шляхом додавання його в список здійснюється так:

  1. Відкрийте список профілів firewall через команду sudo ufw app list .
  2. Подивитися можна побачити різні режими стандартного фаервола в Ubuntu

  3. Введіть пароль від облікового запису для відображення інформації.
  4. Введення пароля для перегляду списку профілів стандартного фаервола Ubuntu

  5. Ви побачите лист доступних додатків, серед них повинен знаходитися і OpenSSH.
  6. Список профілів стандартного фаервола в Ubuntu

  7. Тепер слід дозволити з'єднання через SSH. Для цього додамо його в список дозволених профілів за допомогою sudo ufw allow OpenSSH .
  8. Додати сервер SSH для дозволу з'єднання в фаєрвол Ubuntu

  9. Увімкніть firewall, оновивши правила, sudo ufw enable .
  10. Перезапустити фаєрвол з оновленнями правил в Ubuntu

  11. Для переконання в тому, що з'єднання дозволені, слід прописати sudo ufw status , після чого ви побачите стан мережі.
  12. Подивитися список дозволених з'єднань фаервола в Ubuntu

На цьому наші інструкції по конфігурації SSH в Ubuntu завершені. Подальші налаштування конфігураційного файлу та інших параметрів здійснюються особисто кожним користувачем під його запити. Ознайомитися з дією всіх складових SSH ви можете в офіційній документації протоколу.