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

Додавання 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

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