Новичкам
February 8, 2023

Аутентификация по SSH-ключам

1package

⠀SSH-ключи — это простой и в то же время надёжный и безопасный способ аутентификации пользователей Linux. Подробнее об этом способе в этой статье.


Содержание


Вступление

К содержанию

Что это?

⠀SSH-ключи — это простой и в то же время надёжный и безопасный способ аутентификации пользователей Linux.

⠀Связка SSH-ключей состоит из двух штук:

  • Публичный — используется для отправки зашифрованных сообщений с сервера на удалённый хост, хранится на сервере и может свободно передаваться. Указан в файле $HOME/.ssh/authorized_keys.
  • Приватный — используется для расшифровки сообщений от сервера и должен быть надёжно защищён, поэтому его стоит хранить только на тех устройствах, с которых будет осуществляться подключение к серверу. Может быть переименован.

⠀Можно создавать как для каждого сервера свою связку ключей, так и создать для каждого своего устройства связку и использовать её для подключения ко всем серверам (небезопасно).

Преимущества

  • Высокая уровень защиты.

Недостатки

  • При потере приватного ключа будет утерян доступ к серверу.
  • Неудобство работы с нескольких устройств, особенно со смартфона.

Генерация пары ключей

К содержанию

⠀Генерацию ключей можно выполнить на любом устройстве, однако настоятельно рекомендуется делать это на своём личном, а если присутствует паранойя, то ещё и с отключенным интернетом.

Windows (MobaXterm)

⠀Открыть виртуальную среду нажав на кнопку открытия новой вкладки, выполнить команду и при запросе ввода нажимать Enter:

ssh-keygen

⠀Пара ключей будет сохранена в папке:

...:\Users\USER_NAME\Documents\MobaXterm\home\.ssh

Windows 10 (cmd)

⠀В поиске меню пуска ввести Приложения и возможности, запустить и перейти в раздел Дополнительные компоненты.

⠀В списке компонентов или при помощи поиска найти Клиент OpenSSH.

⠀В случае, если такого компонента нет, нажать Добавить компонент, ввести в поиск то же название и установить его. Возможно потребуется перезагрузка ПК.

⠀После нахождения компонента в поиске меню пуска ввести cmd, запустить консоль, выполнить команду и при запросе ввода нажимать Enter:

ssh-keygen -t ed25519

⠀Пара ключей будет сохранена в папке:

C:\Users\USER_NAME\.ssh

Linux

⠀Выполнить команду и при запросе ввода нажимать Enter:

ssh-keygen

⠀Пара ключей будет сохранена в директории (команда отображает путь):

echo $HOME/.ssh/

MacOS

⠀Выполнить команду и при запросе ввода нажимать Enter:

ssh-keygen -t rsa
Источник

⠀Пара ключей будет сохранена в директории:

/Users/USER_NAME/.ssh/

Настройка сервера

К содержанию

Загрузка ключа (вручную)

⠀Способ подходит для любой ОС, поскольку для подключения к серверу используется сторонний клиент.

⠀Подключиться к серверу, создать на нём папку и файл для SSH-ключей

mkdir -p $HOME/.ssh/; \
touch $HOME/.ssh/authorized_keys

⠀Поместить id_rsa.pub в созданную директорию (команда отображает путь):

echo $HOME/.ssh/

⠀Записать ключ в конец файла.

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

⠀И удалить файл.

rm $HOME/.ssh/id_rsa.pub

Загрузка ключа (встроенная функция)

⠀Способ подходит для Linux и MacOS.

⠀Необходимо подставить в команду свой путь к сгенерированному публичному ключу и IP сервера, выполнить команду и ввести пароль от root пользователя:

ssh-copy-id -i YOUR_PATH/id_rsa.pub root@IP

Проверка

⠀В клиенте для подключения к серверам в настройках сервера выбрать путь к приватному ключу и сохранить изменения. В MobaXterm это делается следующим образом:

⠀Затем необходимо подключиться к серверу, чтобы проверить корректность аутентификации по SSH-ключам.

Отключение пароля

Необходимо заранее проверить аутентификацию по SSH-ключам, поскольку при невозможности авторизации таким способом и отключенной по паролю, доступ к серверу будет затруднён, если не вообще утерян.

⠀Установить nano.

sudo apt install nano -y

⠀Открыть конфиг при помощи nano.

nano /etc/ssh/sshd_config

⠀Найти параметр и отредактировать его значение (при необходимости убрать знак комментария в начале строки):

PasswordAuthentication no

⠀Сохранить изменения сочетанием клавиш Ctrl+S и закрыть текстовый редактор сочетанием Ctrl+X.

⠀Перезапустить SSH службу

sudo systemctl restart ssh

⠀После этих действий попытки авторизоваться при помощи пароля не увенчаются успехом.


Полезные команды

К содержанию

⠀Генерация связки SSH-ключей

# Windows
ssh-keygen -t ed25519
# Linux
ssh-keygen
# MacOS
ssh-keygen -t rsa

⠀Перезапуск SSH службы

sudo systemctl restart ssh

Полезные ссылки

К содержанию

Статья о SSH-ключах | Генерация ключа на Windows 10

Генерация ключа на MacOS


1package

К содержанию

Telegram | Chat | Discord | Twitter | Learning | Admitix


Благодарности

К содержанию

Команда 1package — написание статьи