Зміст
Технологія SSH (Secure Shell) дозволяє проводити безпечне віддалене управління комп'ютером через захищене з'єднання. SSH виробляє шифровку всіх переданих файлів, включаючи паролі, а також передає абсолютно будь-який мережевий протокол. Для коректної роботи інструменту його необхідно не тільки встановити, але ще і налаштувати. Саме про твір головної конфігурації ми і хотіли б поговорити в рамках даної статті, взявши за приклад останню версію операційної системи Ubuntu, на якій буде розташовуватися сервер.
Налаштування SSH в Ubuntu
Якщо ви ще не виконали інсталяцію на серверний і клієнтський ПК, слід це зробити спочатку, благо здійснюється вся процедура досить просто і не займе багато часу. З детальним керівництвом по цій темі знайомтеся в іншій нашій статті за наступним посиланням. У ній також показана процедура редагування файлу конфігурації і тестування роботи SSH, тому сьогодні ми зупинимося трохи на інших завданнях.
Детальніше: встановлення SSH-сервера в Ubuntu
Створення пари ключів RSA
У щойно встановленому SSH ще немає заданих ключів для здійснення підключення від сервера до клієнта і навпаки. Всі ці параметри необхідно задати вручну відразу ж після додавання всіх компонентів протоколу. Пара ключів працює за допомогою алгоритму RSA (скорочення від прізвищ розробників Rivest, Shamir і Adleman). Завдяки цій криптосистеме через спеціальні алгоритми проводиться шифрування ключів. Для створення пари відкритих ключів вам потрібно лише ввести відповідні команди в консоль і слідувати інструкціям, що з'явилися.
- Перейдіть до роботи з &171;терміналом&187; будь-яким зручним методом, наприклад, відкривши його через меню або комбінацію клавіш Ctrl + Alt + T .
- Введіть команду
ssh-keygen
, а потім натисніть на клавішу Enter . - Буде запропоновано створити файл, куди збережуться Ключі. Якщо бажаєте залишити їх в розташуванні, обраному за замовчуванням, просто натисніть на Enter .
- Відкритий ключ може бути захищений парольною фразою. Якщо хочете використовувати цю опцію, в що з'явилася рядку напишіть пароль. Вводяться Символи при цьому відображатися не будуть. У новому рядку потрібно його повторити.
- Далі ви побачите повідомлення про те, що ключ був збережений, а також зможете ознайомитися з його випадковим графічним зображенням.
Тепер є створена пара ключів &8212; секретний і відкритий, які будуть використовуватися для подальшого підключення між комп'ютерами. Потрібно лише помістити ключ на сервер, щоб аутентифікація SSH проходила успішно.
Копіювання відкритого ключа на сервер
Існує три методи копіювання ключів. Кожен з них буде найбільш оптимальний в різних ситуаціях, коли, наприклад, один із способів не працює або не підходить для певного користувача. Ми пропонуємо розглянути всі три варіанти, почавши з самого простого і дієвого.
Варіант 1: команда ssh-copy-id
Команда ssh-copy-id
вбудована в операційну систему, тому для її виконання не потрібно встановлювати ніяких додаткових компонентів. Дотримуйтесь простого синтаксису, щоб скопіювати ключ. В
&171;терміналі&187;
необхідно ввести
ssh-copy-id username@remote_host
, де
username@remote_host
&8212; ім'я віддаленого комп'ютера.
При першому підключенні ви отримаєте повідомлення текстом:
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"
.
При появі повідомлення
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
.
На екрані буде відображено приблизно такий рядок: ssh - RSA + ключ у вигляді набору символів= = demo@test
. Після цього перейдіть до роботи на віддалений пристрій, де створіть нову директорію через
mkdir -p ~/.ssh
. У ній додатково створюється файл
authorized_keys
. Далі вставте туди ключ, який ви дізналися раніше через
echo + рядок публічного ключа >> ~/.ssh/authorized_keys
. Після цього можна пробувати проводити аутентифікацію з сервером без використання паролів.
Аутентифікація на сервері через створений ключ
У попередньому розділі ви дізналися про три методи копіювання ключа віддаленого комп'ютера на сервер. Такі дії дозволять підключитися без використання пароля. Виконується ця процедура через командний рядок шляхом введення shh ssh username@remote_host
, де
username@remote_host
&8212; ім'я користувача та хост потрібного комп'ютера. При першому підключенні ви будете повідомлені про незнайоме з'єднання і можете продовжити, вибравши варіант
yes
.
Підключення відбудеться автоматично, якщо під час створення пари ключів не була задана ключова фраза (passphrase). В іншому випадку спочатку доведеться ввести її, щоб продовжити роботу з SSH.
Вимкнення автентифікації паролем
Успішної настройка копіювання ключів вважається в тій ситуації, коли вдається увійти на сервер без використання пароля. Однак можливість аутентифікації таким чином дозволяє зловмисникам використовувати інструменти для підбору пароля і зламувати захищене з'єднання. Убезпечити себе від таких випадків дозволить повноцінне відключення входу по паролю в конфігураційному файлі SSH. Для цього буде потрібно:
- В &171;терміналі&187;
відкрийте файл конфігурації за допомогою редактора за допомогою команди
sudo gedit /etc/ssh/sshd_config
. - Знайдіть рядок &171;PasswordAuthentication&187; і зніміть знак на початку, щоб розкоментувати параметр.
- Змініть значення на no і збережіть поточну конфігурацію.
- Закрийте редактор і перезапустіть сервер
sudo systemctl restart ssh
.
Аутентифікація по паролю відключиться, і увійти на сервер можна буде тільки з використанням спеціально створених для цього ключів з алгоритмом RSA.
Налаштування стандартного firewall
В Убунту мережевий захистом за замовчуванням виступає фаєрвол Uncomplicated Firewall (UFW). Він дозволяє дозволяти з'єднання для обраних сервісів. Кожна програма створює свій профіль у цьому інструменті, а UFW керує ними, дозволяючи або забороняючи підключення. Налаштування профілю SSH шляхом додавання його в список здійснюється так:
- Відкрийте список профілів firewall за допомогою команди
sudo ufw app list
. - Введіть пароль від облікового запису для відображення інформації.
- Ви побачите лист доступних додатків, серед них повинен знаходитися і OpenSSH.
- Тепер слід дозволити з'єднання через SSH. Для цього додамо його в список дозволених профілів за допомогою
sudo ufw allow OpenSSH
. - Увімкніть firewall, оновивши правила,
sudo ufw enable
. - Для переконання в тому, що з'єднання дозволені, слід прописати
sudo ufw status
, після чого ви побачите стан мережі.
На цьому наші інструкції щодо конфігурації SSH в Ubuntu завершені. Подальші Налаштування конфігураційного файлу та інших параметрів здійснюються особисто кожним користувачем під його запити. Ознайомитися з дією всіх складових SSH ви можете в офіційній документації протоколу.