Аутентификация по SSH-ключам
⠀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-ключам, поскольку при невозможности авторизации таким способом и отключенной по паролю, доступ к серверу будет затруднён, если не вообще утерян.
sudo apt install nano -y
⠀Открыть конфиг при помощи nano
.
nano /etc/ssh/sshd_config
⠀Найти параметр и отредактировать его значение (при необходимости убрать знак комментария в начале строки):
PasswordAuthentication no
⠀Сохранить изменения сочетанием клавиш Ctrl+S
и закрыть текстовый редактор сочетанием Ctrl+X
.
sudo systemctl restart ssh
⠀После этих действий попытки авторизоваться при помощи пароля не увенчаются успехом.
Полезные команды
# Windows ssh-keygen -t ed25519 # Linux ssh-keygen # MacOS ssh-keygen -t rsa
sudo systemctl restart ssh
Полезные ссылки
Статья о SSH-ключах | Генерация ключа на Windows 10
1package
Telegram | Chat | Discord | Twitter | Learning | Admitix
Благодарности
Команда 1package — написание статьи