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

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

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

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

Детальніше: встановлення SSH-сервера в Ubuntu

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

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

  1. Перейдіть до роботи з &171;терміналом&187; будь-яким зручним методом, наприклад, відкривши його через меню або комбінацію клавіш 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

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

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

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

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

Команда ssh-copy-id вбудована в операційну систему, тому для її виконання не потрібно встановлювати ніяких додаткових компонентів. Дотримуйтесь простого синтаксису, щоб скопіювати ключ. В &171;терміналі&187; необхідно ввести ssh-copy-id username@remote_host , де username@remote_host &8212; ім'я віддаленого комп'ютера.

Скопировать ключ 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" .

Передать скопированный ключ через специальную утилиту 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 &8212; ім'я користувача та хост потрібного комп'ютера. При першому підключенні ви будете повідомлені про незнайоме з'єднання і можете продовжити, вибравши варіант yes .

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

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

Вимкнення автентифікації паролем

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

  1. В &171;терміналі&187; відкрийте файл конфігурації за допомогою редактора за допомогою команди sudo gedit /etc/ssh/sshd_config .
  2. Запустить конфигурационный файл SSH через редактор в Ubuntu
  3. Знайдіть рядок &171;PasswordAuthentication&187; і зніміть знак на початку, щоб розкоментувати параметр.
  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 ви можете в офіційній документації протоколу.

більше статей на цю тему: