Як відомо, відкрита технологія SSH дозволяє віддалено підключатися до певного комп'ютера і передавати дані через обраний захищений протокол. Це дозволяє реалізувати і повноцінне керування обраним пристроєм, забезпечивши безпечний обмін важливою інформацією і навіть паролями. Іноді у користувачів виникає потреба здійснити з'єднання через SSH, однак крім інсталяції самої утиліти доводиться виробляти і додаткові налаштування. Про це ми і хочемо поговорити сьогодні, взявши за приклад дистрибутив Debian.
Налаштовуємо SSH в Debian
Ми розділимо процес зміни на кілька етапів, оскільки кожен відповідає за здійснення конкретних маніпуляцій і може просто не знадобитися певним користувачам, що залежить від особистих переваг. Почнемо з того, що всі дії будуть проводитися в консолі і буде потрібно підтвердження прав суперкористувача, тому підготуйтеся до цього заздалегідь.Установка SSH-server і SSH-client
За замовчуванням SSH входить в стандартний набір утиліт операційної системи Debian, однак через будь-яких особливостей потрібні файли можуть втратити свою актуальність або просто відсутні, наприклад, коли користувач вручну справив деінсталяцію. Якщо ви потребуєте в попередній установці SSH-server і SSH-client, виконайте наступну інструкцію:
- Відкрийте меню «Пуск» і запустіть звідти «Термінал». Зробити це можна і через стандартну комбінацію клавіш Ctrl + Alt + T.
- Тут вас цікавить команда sudo apt install openssh-server, що відповідає за установку серверної частини. Введіть її та натисніть на Enter для активації.
- Як ви вже знаєте, дії, що виконуються з аргументом sudo, буде потрібно активувати, вказавши пароль суперкористувача. Враховуйте, що вводяться в цьому рядку символи не відображаються.
- Ви будете повідомлені про те, що пакети додані або оновлені. Якщо SSH-server вже інстальований в Debian, з'явиться повідомлення про наявність зазначеного пакета.
- Далі потрібно додати в систему і клієнтську частину, що стосується і того комп'ютера, до якого в майбутньому буде здійснюватися підключення. Для цього використовується схожа команда sudo apt-get install openssh-client.
Більше ніяких додаткових компонентів інсталювати не доведеться, тепер можна сміливо переходити до управління сервером і налаштування конфігураційних файлів, щоб створити ключі і підготувати все для подальшого з'єднання з віддаленим робочим столом.
Управління сервером і перевірка його роботи
Коротенько давайте зупинимося на тому, як здійснюється управління встановленим сервером і перевірка його роботи. Це необхідно зробити ще до того, як переходити до налаштування, щоб переконатися в коректності функціонування доданих компонентів.
- Використовуйте команду sudo systemctl enable sshd, щоб додати сервер в автозавантаження, якщо це не сталося автоматично. У разі потреби скасування запуску разом з операційною системою використовуйте systemctl disable sshd. Тоді для ручного запуску знадобиться вказувати systemctl start sshd.
- Всі подібні дії абсолютно завжди повинні бути виконані від імені суперкористувача, тому потрібно вводити його пароль.
- Задіюйте команду ssh localhost для перевірки сервера на працездатність. Замініть localhost на адресу локального комп'ютера.
- При першому підключенні ви будете повідомлені про те, що джерело не є перевіреним. Це відбувається, оскільки ми ще не виставили настройки безпеки. Зараз просто підтвердіть продовження підключення, ввівши yes.
Додавання пари ключів RSA
Підключення від сервера до клієнта і навпаки через SSH здійснюється шляхом введення пароля, однак можна і навіть рекомендується створити пару ключів, яка буде розроблена через алгоритми RSA. Цей тип шифрування дозволить створити оптимальну захист, яку буде складно обійти зловмисникові при спробі злому. На додаток пари ключів буде потрібно всього кілька хвилин, а виглядає це процес так:
- Відкрийте «Термінал» і введіть там ssh-keygen.
- Ви можете самостійно вибрати місце, куди потрібно зберегти шлях до ключа. Якщо немає бажання його міняти, просто натисніть на кнопку Enter.
- Зараз створюється відкритий ключ. Він може бути захищений кодовою фразою. Введіть її в відобразити рядок або залиште порожній, якщо не хочете активувати цю опцію.
- При введенні ключової фрази доведеться вказати її ще раз, щоб підтвердити.
- З'явиться повідомлення про створення публічного ключа. Як бачите, йому було присвоєно набір випадкових символів, а також склалося зображення по рандомних алгоритмам.
Завдяки тільки що виробленим дією створився секретний і відкритий ключ. Вони і будуть задіяні для з'єднання між пристроями. Зараз доведеться скопіювати відкритий ключ на сервер, а зробити це можна різними методами.
Копіювання відкритого ключа на сервер
В Debian існує три варіанти, за допомогою яких можна скопіювати відкритий ключ на сервер. Ми пропонуємо відразу ознайомитися з усіма ними, щоб в майбутньому вибрати оптимальний. Це актуально в тих ситуаціях, коли один з методів не підходить або не задовольняє потреби користувача.
Спосіб 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 not 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 ". Виберіть позитивну відповідь, щоб продовжити підключення.
- Після цього утиліта самостійно займеться пошуком і копіюванням ключа. У підсумку, якщо все пройшло успішно, на екрані з'явиться повідомлення «/ 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: «. Це означає, що можна вводити пароль і переходити до безпосереднього управління віддаленим робочим столом.
Додатково уточнимо, що після першої успішної авторизації в консолі з'явиться повідомлення наступного характеру:
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 ~ / .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 not 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) ?.
Підтвердіть його, щоб продовжити з'єднання. Публічний ключ буде автоматично скопійований в кінець конфігураційного файлу «authorized_keys». На цьому процедуру експорту можна вважати закінченою.
Спосіб 3: Ручне копіювання ключа
Цей метод підійде тим користувачам, у кого немає можливості створити віддалене підключення до цільового комп'ютера, однак є фізичний доступ до нього. В такому випадку ключ доведеться переносити самостійно. Для початку визначте відомості про нього на серверному ПК через cat ~ / .ssh / id_rsa.pub.
В консолі повинна відобразитися рядок ssh-rsa + ключ у вигляді набору символів == demo @ test. Тепер можна перейти до іншого комп'ютера, де слід створити нову директорію, ввівши mkdir -p ~ / .ssh. У ній же додається текстовий файл під назвою authorized_keys. Залишилося тільки вставити туди певний раніше ключ через echo + рядок публічного ключа >> ~ / .ssh / authorized_keys. Після цього аутентифікація буде доступна без попереднього введення паролів. Здійснюється це через команду ssh username @ remote_host, де username @ remote_host слід замінити на ім'я необхідного хоста.
Розглянуті щойно способи дозволили перенести публічний ключ на новий пристрій, щоб зробити можливим підключення без введення пароля, однак зараз форма на введення все ще відображається. Такий стан речей дозволяє зловмисникам отримати доступ до віддаленого робочого столу, просто перебравши паролі. Далі ми пропонуємо зайнятися забезпеченням безпеки, виконавши певні настройки.
Відключення аутентифікації по паролю
Як вже було сказано раніше, можливість аутентифікації по паролю може стати слабкою ланкою в безпеці віддаленого з'єднання, оскільки існують засоби переборовши таких ключів. Ми рекомендуємо відключити цю опцію, якщо ви зацікавлені в максимальному захисті свого сервера. Зробити це можна так:
- Відкрийте конфігураційний файл / etc / ssh / sshd_config через будь-який зручний текстовий редактор, це може бути, наприклад, gedit або nano.
- У списку, відшукайте рядок «PasswordAuthentication» і приберіть знак #, щоб зробити цю команду активною. Поміняйте значення yes на no, щоб відключити цікавить опцію.
- По завершенні натисніть на Ctrl + O, щоб зберегти зміни.
- Не міняйте назву файлу, а просто натисніть на Enter для застосування настройки.
- Можна залишити текстовий редактор, натиснувши на Ctrl + X.
- Всі зміни вступлять в силу тільки після перезавантаження служби SSH, тому зробіть це одразу ж через sudo systemctl restart ssh.
В результаті виконаних дій можливість аутентифікації по паролю буде відключена, а вхід стане доступний тільки через пару ключів RSA. Враховуйте це при творі подібної конфігурації.
Налаштування параметра брандмауера
На завершення сьогоднішнього матеріалу хочемо розповісти про налаштування брандмауера, який буде використаний для дозволів або заборон з'єднань. Ми пройдемося лише по основним пунктам, взявши за приклад Uncomplicated Firewall (UFW).
- Для початку давайте переглянемо список існуючих профілів. Введіть sudo ufw app list і натисніть на Enter.
- Підтвердіть дію, вказавши пароль суперкористувача.
- У списку знайдіть SSH. Якщо цей рядок там присутній, значить, все функціонує коректно.
- Дозвольте з'єднання через цю утиліту, написавши sudo ufw allow OpenSSH.
- Увімкніть міжмережевий екран, щоб оновити правила. Робиться це через команду sudo ufw enable.
- Ви в будь-який момент можете перевірити поточний стан брандмауера, ввівши sudo ufw status.
На цьому процес настройки SSH в Debian закінчений. Як бачите, існує безліч різних нюансів і правил, які потрібно дотримуватися. Звичайно, в рамках однієї статті неможливо вмістити абсолютно всю інформацію, тому ми торкнулися тільки основні відомості. Якщо ви зацікавлені в отриманні більш поглиблених даних про цю утиліту, радимо ознайомитися з її офіційною документацією.