Вхід ssh по ключу (linux

Для тестів використовується ім'я користувача: user

Створюємо директорію для ключів
Генеруємо ключі SSH

для цього існує утиліта ssh-keygen

де:
ssh-keygen -Утиліта для генерації ключа
-t - ключ утиліти відповідає за тип генерованого ключа
rsa -тип ключа буває rsa / dsa
-b-ключ через який вказується довжина ключа в bit
1024 - довжина ключа, для тестів вистачить і 1024 для більшої безпеки вказуємо 2048, довший ключ викликає великою навантаження на процесор шіфровака / дешифрування даних
-f-параметр вказує куди покласти ключ
/home/user/.ssh/id_dsa-шлях куди покласти ключ

В результаті в директорії /home/user/.ssh/ у нас з'явилося 2 файли:


Файл з розширенням .pub це відкритий ключ, його ми закидаємо на сервер до якого будемо підключатися по ssh,
файл id_rsa це закритий ключ, його не повідомляється нікому, по ньому ви будете здійснювати вхід.
Під час генерації ключа система запропонує ввести пароль, але тоді доведеться вводити його кожного разу при вході на сервер, так підвищується безпека, але знижується зручність, це вже вирішувати вам, для тестів, пароль не вказуємо натискаємо 2 рази enter

Налаштовуємо цільову машину

Налаштовуємо машину на яку будемо виконувати вхід по ключу, тут необхідно виконати 3 дії:
1) Налаштувати SSH сервер
2) Створити директорію для ключів в домашній директорії користувача
3) Покласти на машину відкритий ключ

1 - Налаштовуємо SSH сервер


В останньому рядку ми вказуємо системі де шукати ключі користувачів, їх можна класти будь-де, але шукати їх буде простіше саме в домашній директорії користувача в директорії .ssh
Нам необхідно застосувати настройки, перезапустивши ssh сервер

2 Створюємо директорію для ключів


в домашній директорії користувача створюємо директорію .ssh

3 - Додаємо на цільову машину відкритий ключ

У створеній директорії .ssh нам необхідно створити файл з відритим ключем

перевіряємо роботу

На робочій машині, якщо ми працюємо під ім'ям user. намагаємося підключитися до цільової машині, набравши команду в консолі:

Повинно відбутися підключення
Якщо на робочій системі ви працюєте під користувачем ім'я якого на цільовій машині відрізняється від імені користувача на робочій машині, наприклад:
Ви працюєте під користувачем superuser. але на цільовій машині ви працюєте під користувачем user. тоді команда підключення матиме вигляд:

Ну а якщо на цільовій машині ssh сервер працює не на стандартному порту 22, а для прикладу, 9999, то команда підключення набирає вигляду:

Не зовсім зрозумів про файли
id_rsa
id_rsa.pub Це файли з закритим і відкритим ключами. Добре. Ключ там тільки один? Тобто для різних ключів потрібно створювати різні файли? Або все ключі можна зберігати в один і той же файл?

Так ключ один, в файлі id_rsa.pub міститься сертифікат, якщо ви хочете дозволити користувачу заходити в систему по декількох ключах, наприклад один ключ для входу з роботи, другий для входу з дому, то вміст файлів з розширенням * .pub необхідно додати в файл :

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

Спасибі за відповідь.
Все ж я поясню, що, в тому числі, я мав на увазі з приводу захисту ключа відповідними правами. Припустимо хтось, хто також має доступ до сервера за своїм ключу, яким-небудь чином випадково (по дурості або тому що його приватний ключ був скомпрометований) або навмисно (ака злий умисел) видалить або змінить Ваш публічний ключ так, що Ви більше не зможете підключатися до сервера. Особливо це небезпечно і можливо, коли у Вас немає фізичного доступу до сервера, а також відключений доступ за логіном / паролем. Прикладів можна накидати ще, просто це найперший, який прийшов в голову.
Щодо fail2ban згоден, це найпростіше і відоме рішення захисту, але його недолік в тому, що працює на основі логів, в яких відображаються спроби доступу. Тобто просто Новомосковскет їх, і виходячи з появи потрібних повідомлень в них і правил в конфіги самого fail2ban, виконує відповідні дії по бану / блокування.
І хочу уточнити, я зараз не спору заради, а просто пояснив причину своїх питань.

Згоден з вами.
Статтю поправлю!

Схожі статті