SSH — чудова технологія; ви можете використовувати його, щоб приховати трафік VPN, захистити з’єднання з веб-сайтами тощо. Єдина проблема полягає в тому, що кожного разу, коли ви намагаєтеся увійти на віддалену машину, вам доведеться вводити свій пароль, а це може бути втомливим. Якщо ви розробник, який хоче підключитися до багатьох машин одночасно через SSH за допомогою сценарію Bash, або просто хтось, хто використовує Secure Shell і йому набридло вводити паролі, є рішення: SSH без пароля. Цей процес передбачає створення безпечного ключа SSH на хост-комп’ютері та спільний доступ до нього як способу доступу до ПК. Це дозволить будь-кому, хто має ключ, увійти, навіть якщо він не знає пароля. Ось як це зробити.
Що таке ключі SSH?
Ключ SSH — це унікальний ідентифікаційний файл, який використовується із Secure Shell. Мета цих ключів полягає в тому, щоб надати користувачеві унікальну особистість і позначити їх як «довірені» під час входу. Ці ключі самі по собі є не тільки файлами, які підтверджують чиюсь особу. Фактично, SSH дозволяє користувачам входити в систему за допомогою ключа, а не пароля. Це означає, що замість того, щоб вводити пароль щоразу, коли ви входите через 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.
ssh [email protected] mkdir -p .ssh
Виконання цієї команди ssh створить приховану папку ~/.ssh у домашньому каталозі віддаленої машини (з користувачем, який використовувався для входу). Ця папка важлива, оскільки саме сюди ми будемо копіювати щойно згенеровані файли ключів SSH.
Щоб скопіювати ключові файли SSH, запустіть ще одну команду з хост-машини SSH на віддалену машину, якій потрібні ключі:
cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Копіювання займе кілька секунд, залежно від швидкості мережі. Коли це завершиться, віддалений ПК матиме згенеровані ключі та зможе увійти на хост-ПК SSH без пароля.
Резервне копіювання ключів SSH
Ключі SSH — корисні речі, і кожен з них унікальний. Саме тому їх резервне копіювання є найкращим способом дій. Проблема в тому, що якщо ви збережете його в іншому місці, хтось може знайти ваш ключ SSH, зберегти його та використовувати для себе. Отже, питання в тому, який хороший спосіб безпечно створити резервну копію ключа SSH? Шифрування.
Найшвидший, найефективніший (і найпростіший спосіб) шифрування – це використовувати GnuPG. Сам інструмент вбудований у більшість інструментів шифрування, які вже існують у Linux, і він є основним, коли запускається шифрування файлів. Щоб встановити GnuPG, відкрийте термінал і знайдіть у диспетчері пакунків «gpg». Програму має бути легко знайти, навіть у дуже незрозумілих дистрибутивах Linux.
Після запуску 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