SSH — це потужний інструмент, який дозволяє приховати VPN-трафік, забезпечити безпеку підключення до веб-сайтів та багато іншого. Однак, постійне введення пароля при кожному вході на віддалений комп’ютер може бути виснажливим. Якщо ви розробник, який часто працює з кількома серверами через SSH за допомогою Bash-скриптів, або просто користувач, якому набридло постійно вводити паролі, існує рішення – SSH без пароля. Цей метод базується на створенні захищеного SSH-ключа на локальному комп’ютері та його використанні для автентифікації на віддалених пристроях. Це дозволяє увійти в систему без пароля, використовуючи лише ключ. Розглянемо, як це налаштувати.
Що таке SSH-ключі?
SSH-ключ — це унікальний ідентифікаційний файл, який використовується в протоколі Secure Shell. Його основна функція полягає в наданні користувачеві унікальної ідентифікації та позначення його як “довіреного” під час входу. Ці ключі не просто підтверджують особу, вони дозволяють входити в систему, використовуючи ключ замість пароля. Отже, замість введення пароля кожного разу, коли ви підключаєтеся через SSH, ви використовуєте свій SSH-ключ.
SSH-ключ безпечно зберігається на вашому комп’ютері з Linux, що дозволяє вам входити на віддалені машини без пароля стільки разів, скільки потрібно.
Створення захищених SSH-ключів
Для створення безпечного SSH-ключа спочатку необхідно переконатися, що SSH працює. Зауважте, що це не обов’язково означає, що вам потрібен SSH-сервер. Основні інструменти та технології SSH повинні бути встановлені на вашому Linux-комп’ютері. Якщо ви не знаєте, як налаштувати SSH, скористайтеся нашим посібником.
Завжди генеруйте SSH-ключі в системі, де розташований SSH-сервер. Не намагайтеся створити їх на сервері без SSH-сесії та копіювати на хост-комп’ютер SSH. Це не буде працювати.
Для початку процесу генерації ключів відкрийте термінал. У ньому введіть наступну команду:
ssh-keygen -t rsa
Після виконання ssh-keygen, з’явиться повідомлення “Створення пари відкритих/приватних ключів RSA”. Це означає, що система генерує як відкритий, так і приватний ключ для використання. Відкриті ключі можна вільно поширювати, тоді як приватні ключі ніколи не повинні бути передані нікому. Звідси й назва “приватний”.
Ключі будуть збережені у каталозі /home/username/.ssh/id_rsa.
Увага: Не видаляйте каталог ~/.ssh, оскільки він містить ваші ключі. Зміни в цьому каталозі можуть призвести до помилок при віддаленому вході та блокування вашого доступу.
Використання SSH-ключів на віддаленому комп’ютері
Після створення SSH-ключів (відкритого та приватного), необхідно скопіювати їх на комп’ютер, до якого ви хочете отримати доступ. Важливо повторити цей процес для всіх комп’ютерів, до яких ви плануєте підключатися через SSH. Інакше, користувачам без ключа доведеться входити за допомогою пароля.
Щоб додати ключі до віддаленої системи, виконайте наступні дії. Переконайтеся, що ви виконуєте ці дії з хост-комп’ютера через SSH.
ssh [email protected] mkdir -p .ssh
Ця команда створить прихований каталог ~/.ssh у домашній директорії віддаленої машини (використовуючи користувача, якого ви використовували для входу). Цей каталог є важливим, оскільки саме сюди буде скопійовано щойно створені ключі SSH.
Для копіювання ключів SSH, виконайте наступну команду з хост-машини SSH на віддалену машину:
cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Копіювання може зайняти кілька секунд, залежно від швидкості мережі. Після завершення віддалений комп’ютер отримає ваші ключі та зможе входити на хост-комп’ютер SSH без пароля.
Резервне копіювання SSH-ключів
SSH-ключі є важливим і унікальним елементом вашої системи, тому їх резервне копіювання є дуже важливим. Однак, зберігання їх у відкритому вигляді є небезпечним, оскільки хтось може отримати доступ до вашого ключа та використовувати його. Тому, найкращим методом безпечного резервного копіювання є шифрування.
Найшвидшим, найефективнішим і найпростішим способом шифрування є використання GnuPG. Цей інструмент вбудований у більшість дистрибутивів Linux та є основним засобом для шифрування файлів. Щоб встановити GnuPG, відкрийте термінал і пошукайте “gpg” в диспетчері пакетів.
Після запуску GPG почніть процес шифрування, стиснувши ваш каталог ~/.ssh в архівний файл tar. Це дозволить уникнути необхідності окремого шифрування кожного файлу в каталозі ~/.ssh.
tar -czvf ssh-stuff.tar.gz /home/username/.ssh
Після завершення стиснення, почніть процес шифрування.
Примітка: Перед шифруванням запустіть gpg в терміналі, щоб створити новий ключ, якщо його ще немає.
gpg -c ssh-stuff.tar.gz
Коли процес шифрування завершиться, GnuPG створить файл “ssh-stuff.tar.gz.gpg”. Оригінальну, незашифровану версію файлу можна видалити. Щоб розшифрувати архів резервної копії, виконайте наступну команду:
gpg ssh-stuff.tar.gz.gpg