Що таке ключ SSH і як ним користуватися?
Автор: Редакція Domeny.ForSale Опубліковано
Коротко: Ключ SSH потрібен для підтвердження особи під час безпечного підключення до сервера або сервісу, наприклад репозиторію коду. На практиці ви використовуєте пару ключів: відкритий, який передаєте сервісу, і приватний, який залишається на вашому пристрої. Такий вхід може замінити пароль облікового запису, але потребує захисту приватного ключа.
Як працює вхід за ключем SSH?
SSH, або Secure Shell, — це протокол для безпечного зв’язку з іншим комп’ютером через мережу. Його використовують, зокрема, для керування серверами, передавання файлів через SFTP та роботи з репозиторіями Git. З’єднання SSH шифрується як під час входу за паролем, так і за ключем — ключ змінює передусім спосіб підтвердження особи.
Пара ключів складається з двох математично пов’язаних елементів:
- Відкритий ключ дає змогу перевірити, чи має людина, яка підключається, відповідний приватний ключ. Ви розміщуєте його на сервері або в налаштуваннях сервісу.
- Приватний ключ потрібен для створення криптографічних підписів, що підтверджують вашу особу. Його не слід надсилати адміністратору чи вставляти в панель керування сервісом.
Під час входу програма SSH використовує приватний ключ, щоб підписати дані, пов’язані зі з’єднанням. Сервер перевіряє підпис за допомогою збереженого відкритого ключа. Сам приватний ключ не передається на сервер. Якщо сучасний алгоритм обрано правильно, відновити приватний ключ із відкритого практично неможливо.
Коли ключ SSH корисний замість пароля?
Якщо ви адмініструєте VPS, тобто віртуальний приватний сервер, то можете входити за ключем замість введення пароля облікового запису. Під час роботи з Git ключ може підтверджувати вашу особу при отриманні та надсиланні змін. Однак це не означає автоматичного підписування комітів — це окрема функція, яку потрібно налаштувати.
Приклад: двоє людей обслуговують сайт компанії. Замість спільного пароля кожна людина створює власну пару ключів, а адміністратор додає їхні відкриті ключі до відповідних облікових записів. Коли одна з них припиняє співпрацю, її ключ можна видалити, не змінюючи ключа іншої. Окремі системні облікові записи додатково полегшують розмежування прав доступу.
Ключі зменшують ризик підбору пароля шляхом автоматичних спроб входу. Проте вони не захищають від усього: заволодівши пристроєм або незахищеним приватним ключем, зловмисник може отримати доступ. Саме додавання ключа також не вимикає вхід за паролем на сервері.
Як створити пару ключів SSH?
У системі зі встановленим OpenSSH відкрийте термінал. Спочатку перевірте каталог .ssh у своєму домашньому каталозі, щоб не перезаписати наявні ключі. Нову пару із сучасним алгоритмом Ed25519 можна створити командою:
ssh-keygen -t ed25519 -C "noutbuk-robota"
Параметр -C додає коментар, за яким легше розпізнати ключ; він не надає прав доступу. Програма запитає, де зберегти ключ, а також запропонує задати парольну фразу для захисту ключа, яку також називають passphrase. Вона захищає файл приватного ключа й не є паролем облікового запису на сервері. Старіші або специфічні середовища можуть вимагати іншого алгоритму — перевірте вимоги постачальника.
Якщо залишити стандартну назву, буде створено два файли:
~/.ssh/id_ed25519— приватний ключ; тримайте його виключно під власним контролем.~/.ssh/id_ed25519.pub— відкритий ключ; його вміст потрібно додати до сервісу.
Символ ~ позначає домашній каталог користувача. Відкритий ключ зазвичай має вигляд одного довгого рядка, що починається з ssh-ed25519. Скопіюйте весь рядок у поле для ключів SSH у панелі постачальника. На сервері з OpenSSH його зазвичай додають до файлу ~/.ssh/authorized_keys відповідного облікового запису, не видаляючи наявних записів. На сервері також мають бути правильно налаштовані права доступу до каталогу та файлу.
Після додавання ключа перевірте з’єднання:
ssh -i ~/.ssh/id_ed25519 korystuvach@adresa-servera
Замініть ім’я користувача й адресу власними даними. Якщо ви змінюєте налаштування доступу, не закривайте поточний сеанс, доки не ввійдете успішно в другому вікні.
Ключ користувача та ключ сервера
Під час першого підключення SSH може показати відбиток ключа сервера, тобто його скорочений ідентифікатор. Це не ваш ключ користувача: він потрібен, щоб підтвердити, що ви підключаєтеся до потрібної машини. Порівняйте відбиток з інформацією, отриманою незалежним довіреним каналом, наприклад від адміністратора або з панелі постачальника.
Не слід ігнорувати попередження про зміну ключа сервера. Причиною може бути законне перевстановлення системи, але також і спроба видати іншу машину за ваш сервер. Спочатку з’ясуйте причину зміни, а не видаляйте без перевірки запис із файлу known_hosts, у якому клієнт SSH зберігає відомі йому сервери.
Як безпечно зберігати та відкликати ключ?
Захистіть приватний ключ надійною парольною фразою та не додавайте його до репозиторію, повідомлення чи звернення до технічної підтримки. Агент SSH — це програма, яка може зберігати розблокований ключ у пам’яті й використовувати його для підписування, зменшуючи потребу повторно вводити парольну фразу.
Окремі ключі для різних пристроїв полегшують скасування доступу в разі втрати одного з них. Якщо ви підозрюєте витік приватного ключа, видаліть відповідний відкритий ключ з усіх серверів і сервісів, які його приймають, а потім згенеруйте нову пару. Зміна парольної фрази локального файлу не робить викрадену копію недійсною.
Перш ніж почати користуватися новим ключем, перевірте в панелі сервісу, як його видалити та як відновити доступ у разі втрати пристрою. Так поломка ноутбука не позбавить вас єдиного способу керувати сервером.
Дивіться також: Що означає www?
