Як організувати вхід на сервер по ssh-ключу для sudo-користувача?

Щоб організувати вхід на сервер по SSH-ключу для sudo-користувача, виконай такі кроки:


1. Згенеруй SSH-ключ на клієнтському комп'ютері

Якщо ще не створений ключ, введи на своєму локальному комп’ютері:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • За замовчуванням ключ збережеться у: ~/.ssh/id_rsa (приватний) і ~/.ssh/id_rsa.pub (публічний).

  • Якщо ключ уже є — не треба створювати новий.


2. Скопіюй публічний ключ на сервер

Припустимо, ім'я sudo-користувача на сервері — username, а IP сервера — 192.168.1.10.

Використай:

ssh-copy-id username@192.168.1.10

Або вручну:

  1. Зайди на сервер під користувачем:

ssh username@192.168.1.10
  1. Створи директорію:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
  1. На локальній машині скопіюй вміст ~/.ssh/id_rsa.pub у файл ~/.ssh/authorized_keys на сервері:

cat ~/.ssh/id_rsa.pub | ssh username@192.168.1.10 "cat >> ~/.ssh/authorized_keys"
  1. На сервері:

chmod 600 ~/.ssh/authorized_keys

3. (Рекомендовано) Заборонити вхід по паролю

Відкрий файл налаштування SSH:

sudo nano /etc/ssh/sshd_config

Знайди та змінити або додай рядки:

PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no

Після змін:

sudo systemctl restart ssh

Увага: не вимикай PasswordAuthentication, поки не впевнишся, що ключ працює (перевір через нову SSH-сесію).


4. Тестування

З локальної машини:

ssh username@192.168.1.10

Якщо все налаштовано — вхід має відбуватись без пароля (або із запитом фрази-пароля, якщо ключ захищений).


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

Last updated