Налаштування 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 [email protected]_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 [email protected]_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys" cat ~/.ssh/id_rsa.pub | ssh [email protected]_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 + ключ в виде набора символов== [email protected] . Після цього перейдіть до роботи на віддалений пристрій, де створіть нову директорію через mkdir -p ~/.ssh . У ній додатково створюється файл authorized_keys . Далі вставте туди ключ, який ви дізналися раніше через echo + строка публичного ключа >> ~/.ssh/authorized_keys . Після цього можна пробувати проводити аутентифікацію з сервером без використання паролів.

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

У попередньому розділі ви дізналися про трьох методах копіювання ключа віддаленого комп'ютера на сервер. Такі дії дозволять підключитися без використання пароля. Виконується ця процедура через командний рядок шляхом введення shh ssh [email protected]_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 ви можете в офіційній документації протоколу.