Технологія SSH (Secure Shell) дозволяє проводити безпечне віддалене управління комп'ютером через захищене з'єднання. SSH здійснює шифрування всіх файлів, що передаються, включаючи паролі, а також передає абсолютно будь-який мережевий протокол. Для коректної роботи інструменту його необхідно не тільки встановити, але ще і налаштувати. Саме про твір головною конфігурації ми і хотіли б поговорити в рамках даної статті, взявши за приклад останню версію операційної системи Ubuntu, на якій буде розташовуватися сервер.
зміст
Якщо ви ще не виконали інсталяцію на серверний і клієнтський ПК, слід це зробити спочатку, благо здійснюється вся процедура досить просто і не займе багато часу. З детальним керівництвом по цій темі знайомтеся в інший нашій статті за наступним посиланням. У ній також показана процедура редагування файлу конфігурації і тестування роботи SSH, тому сьогодні ми зупинимося трохи на інших завданнях.
Детальніше: Установка SSH-server в Ubuntu
У щойно встановленому SSH ще немає заданих ключів для здійснення підключення від сервера до клієнта і навпаки. Всі ці параметри необхідно задати вручну відразу ж після додавання всіх компонентів протоколу. Пара ключів працює за допомогою алгоритму RSA (скорочення від прізвищ розробників Rivest, Shamir і Adleman). Завдяки цій криптосистеме через спеціальні алгоритми проводиться шифрування ключів. Для створення пари відкритих ключів вам потрібно лише ввести відповідні команди в консоль і слідувати з'явилися інструкцій.
ssh-keygen
, а потім натисніть на клавішу Enter. Тепер є створена пара ключів - секретний і відкритий, які будуть використовуватися для подальшого підключення між комп'ютерами. Потрібно лише помістити ключ на сервер, щоб аутентифікація SSH проходила успішно.
Існує три методи копіювання ключів. Кожен з них буде найбільш оптимальний в різних ситуаціях, коли, наприклад, один із способів не працює або не підходить для певного користувача. Ми пропонуємо розглянути всі три варіанти, почавши з самого простого і дієвого.
Варіант 1: Команда ssh-copy-id
Команда ssh-copy-id
вбудована в операційну систему, тому для її виконання не потрібно встановлювати ніяких додаткових компонентів. Дотримуйтесь простий синтаксис, щоб скопіювати ключ. У «Терміналі» необхідно ввести ssh-copy-id username@remote_host
, де username @ remote_host - ім'я віддаленого комп'ютера.
При першому підключенні ви отримаєте повідомлення текстом:
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"
.
При появі повідомлення
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 - ім'я користувача і хост потрібного комп'ютера. При першому підключенні ви будете повідомлені про незнайомому з'єднанні і можете продовжувати грати, обравши варіант yes.
Підключення відбудеться автоматично, якщо під час створення пари ключів не була задана ключова фраза (passphrase). В іншому випадку спочатку доведеться ввести її, щоб продовжити роботу з SSH.
Успішною настройка копіювання ключів вважається в тій ситуації, коли вдається увійти на сервер без використання пароля. Однак можливість аутентифікації таким чином дозволяє зловмисникам використовувати інструменти для підбору пароля і зламувати захищене з'єднання. Убезпечити себе від таких випадків дозволить повноцінне відключення входу по паролю в файлі конфігурації SSH. Для цього потрібно:
sudo gedit /etc/ssh/sshd_config
. sudo systemctl restart ssh
. Аутентифікація по паролю відключиться, і увійти на сервер можна буде тільки з використанням спеціально створених для цього ключів з алгоритмом RSA.
В Убунту мережевий захистом за замовчуванням виступає фаєрвол Uncomplicated Firewall (UFW). Він дозволяє дозволяти підключення для обраних сервісів. Кожна програма створює свій профіль в цьому інструменті, а UFW управляє ними, дозволяючи або забороняючи підключення. Налаштування профілю SSH шляхом додавання його в список здійснюється так:
sudo ufw app list
. sudo ufw allow OpenSSH
. sudo ufw enable
. sudo ufw status
, після чого ви побачите стан мережі. На цьому наші інструкції по конфігурації SSH в Ubuntu завершені. Подальші налаштування конфігураційного файлу та інших параметрів здійснюються особисто кожним користувачем під його запити. Ознайомитися з дією всіх складових SSH ви можете в офіційній документації протоколу.