SSH (безпечна оболонка, безпечна оболонка) являє собою зашифрований протокол для адміністрування та взаємодії між серверами. Під час роботи з сервером Ubuntu ви, швидше за все, будете проводити більшу частину часу у вашому терміналі, підключеному через SSH до вашого сервера.
1. Спершу створіть пару ключів на клієнтській машині (звичайно, це ваш комп'ютер):
ssh-keygen
Після введення цієї команди ви повинні побачити наступний висновок:
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):
Натисніть Enter .ssh/, щоб зберегти пару ключів у вашому домашньому каталозі або задати інший каталог.
Якщо раніше ви вже згенерували кілька ключів SSH, ви можете побачити наступний висновок:
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
Якщо ви виберете перезаписати ключі на диск, ви не зможете використовувати старі ключі для аутентифікації. Будьте дуже осторожни при виборі yes, це рішення не буде відмінено.
Ви повинні побачити наступний висновок:
Enter passphrase (empty for no passphrase):
Тут ви можете задати ключову фразу (пароль), яку зазвичай рекомендується зробити. Ключова фраза додає додатковий рівень безпеки для запобігання входу на сервер неавторизованих користувачів. Для того, щоб дізнатися більше про те, як це працює, рекомендуємо познайомитися з нашим керівництвом щодо налаштування аутентифікації за ключами SSH на серверах Linux .
Ви повинні побачити наступний висновок:
Your identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
| . =++.. |
| o=++. |
+-----------------------+
Тепер у вас є пара з публічного та секретного ключів, які ви можете використовувати для аутентифікації. Далі ми розмістили публічний ключ на вашому сервері, щоб ви могли використовувати автентифікацію за ключами SSH для входу.
2. Копіювання публічного ключа на сервер Ubuntu
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys"
Ви можете побачити висновок наступного виду:
The authenticity of host 'remote_host (remote_host)' 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
Це означає, що ваш локальний комп'ютер не знайшов видалений хост. Це відбувається, коли ви намагаєтеся підключитися до нового хосту в перший раз. Надрукуйте «так» і натисніть ENTERдля продовження.
Далі вам буде запропоновано ввести пароль облікового запису користувача на виданому хості:
username@remote_host's password:
Після введення пароля міститься ваш файл публічного ключа id_rsa.pubбуде скопійовано в кінці файлу authorized_keysна видаленому хості.
3. Відключення аутентифікації по паролю на вашому сервері
Якщо вам вдалося увійти у ваш віддалений обліковий запис на віддаленому хості по SSH без введення пароля, ви успішно налаштували аутентифікацію за ключем SSH для вашого облікового запису. Однак можливість заходити на сервер з використанням пароля все є активна, що означає, що ваш сервер вразливий для атаки з перебором пароля (атаки грубої сили).
Перед тим, як слідувати подальшим інструкціям, переконайтеся, що ви збудували аутентифікацію за ключем SSH для вашого користувача rootабо для користувача з sudoпривілеями на вашому сервері. Після завершення описаних далі процедур вхід по паролю стане недоступним, тому дуже важливо переконатися, що у вас залишається доступ до вашого сервера.
Як тільки ви переконаєтеся, що обліковий запис вашого видаленого користувача має привілеї адміністратора, увійдіть на сервер з аутентифікацією користувача за ключем SSH, використовуючи або обліковий запис , або обліковий запис користувача з rootпривілеями sudo. Далі відкрийте конфігураційний файл демона SSH:
sudo nano /etc/ssh/sshd_config
Внутрішній файл знайдіть директиву PasswordAuthentication. Вона може бути закоментована. За необхідності розкоментуйте її та встановіть її значення в «no». Це відключає можливість входу на сервер за паролем.
PasswordAuthentication no
Збережіть і закрийте файл нажав CTRL+ X, потім Yдля підтвердження збереження файлу, а ENTER також для виходу з текстового редактора nano. Для внесених змін нам необхідно перезапустити сервіс sshd:
sudo systemctl restart ssh
Після перевірки працездатності з'єднань SSH ви можете закрити всі відкриті сесії з сервером.
Тепер демон SSH на вашому сервері з Ubuntu 20.04 працює тільки з ключами SSH. Аутентифікація по паролю повністю відключена.