Безпарольний SSH — це зручно і безпечно: ви входите на сервер Linux за допомогою криптографічної пари ключів, а не вразливих паролів. Нижче — простий і надійний план, як підняти ключову авторизацію, вимкнути паролі та навести лад із правами доступу Linux і користувачами. Розберемося, як зробити SSH підключення стабільним і захищеним, а також що робити, якщо щось пішло не так.
Що таке безпарольний SSH і чому це безпечніше
Замість пароля ви підтверджуєте особу приватним ключем, що зберігається лише у вас. На сервері лежить відповідний публічний ключ у файлі ~/.ssh/authorized_keys. Такий підхід захищає від брутфорсу паролів і полегшує керування доступом для різних користувачі та групи Linux.
Покрокова інструкція: від генерації ключів до вимкнення паролів
1) Генеруємо пару ключів на клієнті
Сучасний вибір — Ed25519: швидко і безпечно. Додайте коментар, щоб розуміти, для якого хоста ключ.
2) Копіюємо відкритий ключ на сервер
Найпростіше — за допомогою ssh-copy-id:
Або вручну:
3) Встановлюємо правильні права та налаштовуємо sshd
Дуже важливо налаштувати права доступу Linux і власника файлів. На сервері:
Опція PermitRootLogin no закриє прямий вхід root, що покращить безпеку вашого сервер Linux.
4) Тестуємо SSH підключення і за бажанням — ssh-agent
Перевірте, що входите без пароля:
Щоб не вводити парольну фразу від ключа щоразу, увімкніть ssh-agent:
Зручно створити короткий аліас хоста у ~/.ssh/config:
Альтернативні способи і тонкощі
Інші формати ключів і параметри
Якщо потрібна сумісність зі старими системами, можна згенерувати RSA 4096:
Для середовищ із багатьма користувачами корисно централізовано керувати ключами через конфіг AuthorizedKeysFile або використати TrustedUserCAKeys з підписаними сертифікатами (enterprise-сценарій).
Обмеження в authorized_keys для підвищення безпеки
У ~/.ssh/authorized_keys можна додати обмеження: IP-адреси, примусовий командний інтерпретатор, заборона форвардів тощо. Наприклад:
Такі правила допомагають точніше контролювати доступ для різних користувачі та групи Linux і сервісних облікових записів.
GUI-спосіб (для робочого столу)
На робочих станціях GNOME/KDE можна керувати ключами через менеджери ключів (наприклад, Seahorse у GNOME). Створіть нову пару ключів, задайте парольну фразу, додайте публічний ключ на сервер так само, як у розділі вище, і використовуйте менеджер для автоматичного завантаження ключа в агент після входу в систему. Це зручно для регулярного SSH підключення до ваших хостів.
FAQ
Чому отримую "Permission denied (publickey)"?
Перевірте права: chmod 700 ~/.ssh і chmod 600 ~/.ssh/authorized_keys. Переконайтеся, що власник ~/.ssh — саме потрібний користувач: chown -R $USER:$USER ~/.ssh. На сервері перегляньте журнали: sudo journalctl -u sshd -b.
Як увімкнути нестандартний порт?
У /etc/ssh/sshd_config змініть Port 22 на інший, перезавантажте службу та підключайтеся так: ssh -p 2222 user@host. Не забудьте відкрити порт у firewall.
Чи можна тимчасово дозволити пароль?
Так, але не рекомендується. Тимчасово: PasswordAuthentication yes, потім sudo systemctl reload sshd. Поверніть no, коли завершите роботи.
SELinux блокує логін ключем
Відновіть контексти: restorecon -R -v ~/.ssh. Перевірте /var/log/audit/audit.log для деталей.
Як керувати доступом для команди?
Створіть групу для адміністраторів, керуйте членством (користувачі та групи Linux) і роздайте ключі централізовано (скрипти або конфіг-менеджмент). Так легше підтримувати порядок і швидко відкликати доступ.
Порада від Kernelka
Тримайте приватні ключі під надійною парольною фразою і використовуйте ssh-agent із таймаутом. Регулярно проводьте ревізію authorized_keys і вимикайте зайві доступи. Невеликий чек-ап раз на місяць — і ваш сервер Linux спатиме спокійніше 😌
Підсумок
- Згенеруйте сучасний ключ (Ed25519) та збережіть приватний ключ у безпечному місці.
- Додайте публічний ключ до
~/.ssh/authorized_keysі встановіть коректні права доступу Linux. - У
sshd_configувімкнітьPubkeyAuthenticationі вимкнітьPasswordAuthentication; забороніть root-логін. - Використовуйте ssh-agent і зручні аліаси у
~/.ssh/configдля швидкого SSH підключення. - За потреби застосовуйте обмеження в
authorized_keysта керуйте доступом через користувачі та групи Linux.
З таким налаштуванням ви отримаєте безпечний і комфортний доступ до свого сервера без паролів, але з максимальним контролем. 🚀

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.