Зміст
Як відомо, відкрита технологія SSH дозволяє віддалено підключатися до певного комп'ютера і передавати дані через обраний захищений протокол. Це дозволяє реалізувати і повноцінне управління обраним пристроєм, забезпечивши безпечний обмін важливою інформацією і навіть паролями. Іноді у користувачів виникає потреба здійснити з'єднання через SSH, проте крім інсталяції самої утиліти доводиться виробляти і додаткові настройки. Про це ми і хочемо поговорити сьогодні, взявши за приклад дистрибутив Debian.
Налаштування SSH на Debian
Ми розділимо процес конфігурації на кілька етапів, оскільки кожен відповідає за здійснення конкретних маніпуляцій і може просто не стати в нагоді певним користувачам, що залежить від особистих переваг. Почнемо з того, що всі дії будуть проводитися в консолі і буде потрібно підтвердження прав суперкористувача, тому підготуйтеся до цього заздалегідь.
Встановлення SSH-сервера та SSH-клієнта
За замовчуванням SSH входить в стандартний набір утиліт операційної системи Debian, однак через будь-яких особливостей потрібні файли можуть застаріти або просто бути відсутнім, наприклад, коли користувач вручну зробив деінсталяцію. Якщо ви потребуєте попередньої установки SSH-server і SSH-client, виконайте наступну інструкцію:
- Відкрийте меню &171; Пуск & 187; і запустіть звідти &171;Термінал&187; . Зробити це можна і через стандартну комбінацію клавіш 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. Цей тип шифрування дозволить створити оптимальний захист, яку буде складно обійти зловмисникові при спробі злому. На додавання пари ключів потрібно всього кілька хвилин, а виглядає це процес так:
- Відкрийте &171;Термінал&187;
і введіть там
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'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"
. Виберіть позитивну відповідь, щоб продовжити підключення. - Після цього утиліта самостійно займеться пошуком і копіюванням ключа. У підсумку, якщо все пройшло успішно, на екрані з'явиться повідомлення &171;
/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:
&171;. Це означає, що можна вводити пароль і переходити до безпосереднього управління віддаленим робочим столом.
Додатково уточнимо, що після першої успішної авторизації в консолі з'явиться повідомлення наступного характеру:
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'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)?
Підтвердьте його, щоб продовжити з'єднання. Публічний ключ буде автоматично скопійований в кінець конфігураційного файлу &171;authorized_keys&187; . На цьому процедуру експорту можна вважати закінченою.
Спосіб 3: Ручне копіювання ключа
Цей метод підійде тим користувачам, у кого немає можливості створити віддалене підключення до цільового комп'ютера, проте є фізичний доступ до нього. В такому випадку ключ доведеться переносити самостійно. Для початку визначте відомості про нього на серверному ПК через cat ~/.ssh/id_rsa.pub
.
У консолі повинна відобразитися рядок ssh-RSA + ключ у вигляді набору символів= = demo@test
. Тепер можна перейти до іншого комп'ютера, де слід створити нову директорію, ввівши
mkdir -p ~/.ssh
. У ній же додається текстовий файл під назвою
authorized_keys
. Залишилося тільки вставити туди певний раніше ключ через
echo + рядок публічного ключа > & gt;~/.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 закінчений. Як бачите, існує безліч різних нюансів і правил, яких потрібно дотримуватися. Звичайно, в рамках однієї статті неможливо вмістити абсолютно всю інформацію, тому ми торкнулися тільки основні відомості. Якщо ви зацікавлені в отриманні більш поглиблених даних про цю утиліту, радимо ознайомитися з її офіційною документацією.