Як додати ключі SSH в Ubuntu 20.04

Налаштуйте безпечний вхід без пароля на віддалений сервер Ubuntu за допомогою ключів SSH

SSH — це безпечний мережевий протокол клієнт-сервер, який допомагає клієнтському комп’ютеру підключатися та спілкуватися з віддаленим сервером. З’єднання SSH гарантує, що команди, які вводяться в терміналі, надсилаються на віддалений сервер через зашифрований канал.

Для підключення до віддаленого сервера використовуються два типи механізмів аутентифікації: автентифікація на основі пароля (схильна до атак грубої сили) та автентифікація на основі SSH-ключів (яка дуже безпечна).

Під час аутентифікації на основі ключа SSH на клієнтському комп’ютері створюється пара ключів, яка називається відкритим ключем і закритим ключем. Копія цього відкритого ключа доступна на віддаленому сервері. Коли клієнт надсилає запит на підключення до сервера, сервер генерує випадковий рядок і шифрує його за допомогою відкритого ключа. Цей рядок можна розшифрувати лише за допомогою приватного ключа, доступного на клієнтському комп’ютері. Цей метод гарантує, що до сервера можуть отримати доступ лише клієнти, які містять закритий ключ.

У цьому посібнику ми побачимо, як налаштувати ключі SSH на сервері Ubuntu 20.04 LTS.

Перевірте, чи є у вас на комп’ютері SSH-ключ

Щоб перевірити, чи вже існує пара ключів SSH на вашому комп’ютері, введіть цю команду у свій термінал.

ls -l ~/.ssh/id_*.pub

Якщо наведена вище команда повертається немає такого файлу чи каталогу або співпадінь не знайдено, то це означає, що пара ключів SSH не існує.

Якщо у вас є існуюча пара ключів SSH, ви можете використовувати ту саму пару ключів для доступу до двох віддалених серверів, або ви також можете створити іншу пару ключів з іншою назвою. Давайте перейдемо до наступного кроку і подивимося, як створити ключі SSH для обох випадків.

Створення ключів SSH на клієнтському комп’ютері

Щоб створити нову пару ключів SSH на вашому комп’ютері, введіть команду, як показано нижче.

ssh-keygen

За замовчуванням ключі SSH мають 2048 біт. Для кращої безпеки, якщо ви хочете створити ключі SSH з вищими бітами, скористайтеся такою командою.

ssh-keygen -b 4096

Якщо команда виконана успішно, на екрані з’явиться наступне повідомлення.

створення пари ключів публічний/приватний RSA. Введіть файл, в якому потрібно зберегти ключ (/home/harshit/.ssh/id_rsa):

Тепер, якщо у вас немає пар ключів SSH на вашому комп’ютері, просто натисніть Введіть, але якщо у вас є існуючий ключ SSH, збережіть ключ з іншою назвою файлу, як показано нижче.

Введіть файл, у якому потрібно зберегти ключ (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

Замініть ххх в кінці імені файлу з відповідною назвою, як показано нижче, і натисніть Введіть.

Введіть файл, у якому потрібно зберегти ключ (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1

Наступна підказка попросить вас ввести парольну фразу довільної довжини, це забезпечить дворівневу безпеку вашого пристрою.

Введіть парольну фразу (пусто, якщо парольну фразу немає): введіть ту саму парольну фразу ще раз:

Введення цієї парольної фрази гарантує, що навіть якщо людина отримає доступ до вашого приватного ключа, вона не зможе отримати доступ до вашого віддаленого сервера без цієї парольної фрази.

Після завершення всього процесу на вашому екрані з’явиться таке повідомлення.

ssh-keygen -b 4096 Після завершення процесу створення ключа SSH на екрані з'явиться таке повідомлення.

Ключі SSH були згенеровані у вашій системі. Тепер настав час скопіювати відкритий ключ на віддалений сервер.

Копіювання відкритого ключа на віддалений сервер Ubuntu

Найпростіший і найшвидший спосіб скопіювати відкритий ключ на віддалений сервер - це використовувати ssh-copy-id корисність. Але якщо ця утиліта з якихось причин недоступна на вашому комп’ютері, ви також можете скористатися іншими методами, наведеними в цьому розділі.

Використання утиліти ssh-copy-id

The ssh-copy-id Утиліта за замовчуванням доступна на вашій машині Ubuntu, яка копіює відкритий ключ з вашого пристрою у відповідний каталог вашої віддаленої машини Ubuntu.

Щоб скопіювати відкритий ключ ssh, просто введіть команду у своєму терміналі, як показано нижче.

ssh-copy-id username@hostname

Замініть ім'я користувача і ім'я хоста у наведеній вище команді за допомогою імені користувача та імені хоста вашого сервера.

Наступне повідомлення з’явиться на вашому терміналі, якщо ви підключаєтеся до свого хоста вперше, введіть так і натисніть Введіть.

Неможливо встановити справжність хоста "172.105.XX.XX (172.105.XX.XX)". Відбиток ключа ECDSA: xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Ви впевнені, що хочете продовжити підключення (так/ні)? так

Тепер ssh-copy-id утиліта сканує файл з іменем id_rsa.pub який містить відкритий ключ SSH. Після завершення процесу сканування вам буде запропоновано ввести пароль віддаленого сервера, як показано нижче. Введіть пароль і натисніть Введіть.

/usr/bin/ssh-copy-id: ІНФОРМАЦІЯ: спроба ввійти з новим ключем(ами), щоб відфільтрувати всі, які вже встановлені /usr/bin/ssh-copy-id: ІНФОРМАЦІЯ: 1 ключ(и) ) залишилося встановити - якщо зараз вам буде запропоновано встановити нові ключі, пароль [email protected]:

Після додавання ключа на вашому терміналі з’явиться наступне повідомлення.

Кількість доданих ключів: 1 Тепер спробуйте увійти на комп’ютер за допомогою: "ssh '[email protected]'" і переконайтеся, що додано лише ключ(и), який ви хочете.

Якщо у вас є кілька ключів SSH на вашому клієнтському комп’ютері, то щоб скопіювати відповідний відкритий ключ на ваш віддалений комп’ютер, введіть команду за шаблоном, показаним нижче.

ssh-copy-id -i id_rsa_xxx.pub username@host

💡 Порада

Не забудьте ввести .pub в кінець імені файлу під час введення в терміналі.

Копіювання відкритого ключа методом конвеєра

Введіть таку команду в терміналі if ssh-copy-id утиліта недоступна. Ця команда може здатися трохи довшою, але вона працює належним чином.

кіт ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Замінити віддалене_ім'я користувача і IP-адреса_сервера з вашим іменем користувача та IP-адресою.

Якщо на вашому комп’ютері доступно кілька ключів SSH, замініть їх id_rsa.pub з відкритим файлом ключа SSH на ваш вибір. Наприклад, id_rsa_client_1.pub.

Коли буде запропоновано, введіть пароль віддаленого користувача та натисніть Введіть.

Пароль [email protected]:

Після того, як ви введете пароль, id_rsa.pub файл буде скопійовано до авторизовані_ключі файл віддаленого сервера.

Копіювання відкритого ключа вручну

Використовуйте цей метод, якщо у вас немає доступу до віддаленої системи через автентифікацію паролем.

Відкрийте id_rsa.pub файл за допомогою кіт команду в терміналі. Ви також можете відкрити його з текстового редактора, мета – просто скопіювати вміст файлу.

кішка ~/.ssh/id_rsa.pub

Вміст файлу буде виглядати так, як показано нижче.

SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC

Тепер увійдіть на свій віддалений сервер і вставте скопійований вміст за допомогою команди, показаної нижче. Замініть верхній_рядок з скопійованим вмістом.

echo above_string >> ~/.ssh/authorized_keys

Налаштування кількох ключів SSH (необов’язково)

Цей крок призначений для людей, які налаштували кілька ключів SSH на своєму клієнтському комп’ютері. Пропустіть цей розділ, якщо у вас є лише один ключ SSH.

Щоб керувати кількома ключами SSH, ми створимо файл a конфіг файл всередині .ssh каталогу за допомогою команди, показаної нижче.

cd ~/.ssh конфігурація vim

Тип я щоб увійти в командний режим і ввести деталі кількох хостів, як показано в наступному прикладі:

Host remote-ubuntu-server HostName 172.105.XX.XX User root IdentityFile ~/.ssh/id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX User root IdentityFile ~/.ssh/id_rsa_client_

Аналогічно введіть відомості про інші віддалені сервери та їх ключі. Після завершення процесу натисніть вихід і :wq щоб зберегти та вийти.

Тепер наступні процеси однакові як для одного або кількох ключів SSH на клієнтському комп’ютері.

Увійдіть на свій віддалений сервер за допомогою ключів SSH

Після завершення процесу копіювання вашого відкритого ключа увійдіть на свій віддалений сервер, ввівши команду, як показано нижче.

ssh віддалене_ім'я_користувача@ip_адреса_сервера

Якщо ви вказали парольну фразу під час створення пари ключів, вам буде запропоновано ввести її. Після завершення процесу аутентифікації відкриється новий сеанс.

Тепер ви успішно налаштували автентифікацію на основі ключів SSH на вашому віддаленому сервері. Але аутентифікація на основі пароля все ще активна на вашому сервері, це означає, що ваш віддалений сервер все ще схильний до атак грубої сили.

Тож тепер ми повністю відключимо механізм входу на основі пароля з нашого віддаленого сервера.

Вимкніть механізм входу на основі пароля

Перш ніж вносити будь-які зміни, переконайтеся, що користувач root або будь-який користувач із підтримкою sudo для вашого віддаленого облікового запису має доступ до вашого сервера за допомогою системи аутентифікації на основі ключа SSH. Цей крок повністю заблокує або вимкнуть вхід на основі пароля, тому дуже важливо, щоб принаймні один користувач root мав доступ до сервера через ключ SSH.

Увійдіть на свій віддалений сервер Ubuntu і введіть команду, показану нижче.

sudo vim /etc/ssh/sshd_config
  • Натисніть вихід, / і введіть «PasswordAuthentication» і натисніть увійти.
  • Тепер натисніть я і змініть значення «PasswordAuthentication yes» на «PasswordAuthentication no».
  • Натисніть вихід і повторіть наведений вище процес, щоб знайти «ChallengeResponseAuthentication», «UsePAM», і змінити їх значення на немає так само.
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no

Після встановлення всіх значень немає, натисніть вихід, тип :wq і вдарив увійти.

Щоб активувати всі зміни, перезапустіть файл ssh служби за допомогою наведеної нижче команди.

sudo systemctl перезапустити ssh

Тепер відкрийте нове вікно терміналу на своєму комп’ютері та переконайтеся, що аутентифікація вашого ключа SSH працює належним чином, перш ніж закрити поточний сеанс.

Після завершення процесу перевірки закрийте всі запущені сеанси.

Тепер ми успішно налаштували автентифікацію на основі ключа SSH на нашому сервері Ubuntu 20.04. Тепер ніхто не може увійти на ваш сервер за допомогою механізму входу на основі пароля.

Категорія: Linux