Додавання 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-server командою
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
Бачимо, що пару ключів успішно створено. Файл без приставки .pub — це приватний ключ, який необхідно зберігати в безпечному місці та нікому не передавати. Файл із приставкою .pub — публічний ключ, який використовується для налаштування доступу до сервера.
Публічний ключ можна перенести на сервер будь-яким зручним доступним способом, наприклад:
ssh-copy-id user@server_ip
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@server_ip
Або ж, при встановленні сервера додати ключ в поле ssh key
Після переносу публічного ключа на сервер, потрібно перевірити, чи вдало він зберігся в папці /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-server
Set-Service -Name sshd -StartupType 'Automatic'
Та, запускаємо службу sshd-server
Start-Service sshd
Переходимо в теку C:\ProgramData\ssh\
та відкриваємо файл C:\ProgramData\ssh\sshd-config, переходимо на строку з
#PubkeyAuthentication yes -> PubkeyAuthentication yes
та зберігаємо
Переходимо в теку користувача, та створюємо файл .ssh/authorized_keys
Після чого, вікдривши його, додаємо туди ключ, попередньостворений на клієнтському пристрої
(ssh-keygen -t ed25519)
У випадку, якщо ssh-ключ, потрібно надати саме користувачу Адміністратору, даний ключ повинен знаходитись в
C:\ProgramData\ssh\ administrators_authorized_keys
Також, задаємо строгі права на даний файл за допомогою команд
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
Перевірте підключення до сервера