Перейти до основного вмісту

Додавання ssh-ключа на сервер

SSH – мережевий протокол, що надає можливість віддаленого керування операційною системою, за допомогою командного рядка, проте на відміну від telnet шифрує весь трафік, включаючи паролі, що також не є найнадійнішим способом авторизації на сервері


SSH-ключі – пара криптографічних файлів, (публічний та приватний), що замінюють пароль при підключенні до віддалених серверів

  • приватний ключ зберігається лише на клієнтському ПК і ніяк не розголошується
  • публічний ключ (.pub) надсилається на сервер, де зберігається у відповідному файлі. За замовчуванням це - /home/[USER]/.ssh/authorized_keys) з правами 600 (-rw------) -rw------- 1 194 Jun 21 08:27
connect to Linux server​

Підключення до серверу​

Перший приклад налаштування в разі якщо використовуєте OS Unix-систем

Для початку потрібно перевірити що ssh-server на стороні сервера, та ssh-client на клієнтському ПК, з якого відбуватиметься підключення присутні в системі

Перевіряємо наявність ssh-server однією з команд: systemctl status ssh systemctl status sshd service ssh status

ssh_status

Перевіряємо наявність ssh-server командою
ssh -V

ssh_-v

Увімкнення дозволу для підключення ssh за допомогою ключа

Першочергово потрібно дозволити авторизацію в конфігураційному файлі, що за замовчуванням знаходиться в /etc/ssh/sshd_config Для цього, потрібно на сервері, до якого відбуватиметься підключення, відкрити даний файл, та розкоментувати пункт PubkeyAuthentication

#PubkeyAuthentication yes -> PubkeyAuthentication yes
або змінити значення no на yes
PubkeyAuthentication no -> PubkeyAuthentication yes

Одразу ж після даної строки знаходиться запропонований маршрут
/home/[USER]/.ssh/authorized_keys

Створення ssh ключів
​

В командному рядку, клієнтського ПК, потрібно виконати команди, представлені нижче, для створення зв’язки ключів ssh

Ed25519 (найновіший та найбезпечніший)
ssh-keygen -t ed25519 -C "comment_or_email"
RSA (резервний варіант)
ssh-keygen -t rsa -b 4096 -C "comment_or_email"
ECDSA
ssh-keygen -t ecdsa -b 521 -C "comment_or_email"
DSA (Застарілий і не безпечний, може не підтримуватись)
ssh-keygen -t dsa -C "comment_or_email"

Після створення одного, або декількох ssh-зв’язки, перевіряємо її наявність в /etc/ssh

ssh_host

Бачимо, що пару ключів успішно створено. Файл без приставки .pub — це приватний ключ, який необхідно зберігати в безпечному місці та нікому не передавати. Файл із приставкою .pub — публічний ключ, який використовується для налаштування доступу до сервера.


Публічний ключ можна перенести на сервер будь-яким зручним доступним способом, наприклад:


ssh-copy-id user@server_ip ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@server_ip


Або ж, при встановленні сервера додати ключ в поле ssh key

add_ssh-key-CP

Після переносу публічного ключа на сервер, потрібно перевірити, чи вдало він зберігся в папці /home/user/.ssh/authorized_keys


Перевірте правильність прав для даного файлу, має бути як у прикладі:
-rw------- 1 user user 194 Jun 21 08:27 authorized_keys

Після всіх маніпуляцій на сервері перезавантажуємо ssh-server
sudo systemctl restart sshd (sshd.service, ssh)
або
service sshd (sshd.service, ssh) restart

Перевірте підключення

connect to Windows server​

Підключення до серверу​

Нижче приклад для OS Windows

Для додавання ключ на windows-server для початку потрібно встановити дану службу ssh-server

Для цього підключаємось до серверу будь-яким іншим способом (vnc)та встановлюємо його командою в PowerShell від імені адміністратора

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


ssh-key-Win

Встановлюємо автозапуск ssh-server
Set-Service -Name sshd -StartupType 'Automatic'

ssh-key-Win_autostart

Та, запускаємо службу sshd-server
Start-Service sshd

Start-Service

Переходимо в теку C:\ProgramData\ssh\
та відкриваємо файл C:\ProgramData\ssh\sshd-config, переходимо на строку з
#PubkeyAuthentication yes -> PubkeyAuthentication yes
та зберігаємо

PubkeyAuthentication

Переходимо в теку користувача, та створюємо файл .ssh/authorized_keys
Після чого, вікдривши його, додаємо туди ключ, попередньостворений на клієнтському пристрої
(ssh-keygen -t ed25519)

У випадку, якщо ssh-ключ, потрібно надати саме користувачу Адміністратору, даний ключ повинен знаходитись в
C:\ProgramData\ssh\ administrators_authorized_keys

Win_key_admin

Також, задаємо строгі права на даний файл за допомогою команд

icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /grant "*S-1-5-32-544:F"
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /grant "*S-1-5-18:F"

В рамках інструкції, змінюємо налаштування Брандмауера на роботу для всіх мереж
Set-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -Profile Any

Перевірте підключення до сервера