SSH авторизация по ключу — наиболее безопасный способ авторизации, значительно превосходящий по безопасности обычный метод авторизации по паролю. В этой небольшой статье, мы разберем, как реализовать авторизацию по SSH ключу на удаленном сервере под управлением операционной системы семейства Linux.
Генерация ключа в Linux
- Первым делом, заходим под нужного пользователя, для которого следует создать ключ. Это можно сделать на этапе логина в систему, или же воспользоваться утилитой su:
su - [ИМЯ ПОЛЬЗОВАТЕЛЯ] - Затем, генерируем ключ при помощи команды ssh-keygen. На более-менее современных системах, при генерации ключа следует указать использование алгоритма Ed25519:
ssh-keygen -t ed25519 -a 100Для старых систем (где версия OpenSSH старее, чем OpenSSH 6.5), следует использовать RSA:
ssh-keygen -t rsa -b 2048 - При генерации ключа вам будет задано несколько вопросов:
- Enter file in which to save the key (/home/user/.ssh/id_rsa) — если нет необходимости сохранять в другое место сгенерированные файлы ключей, то оставляем без ответа;
- Enter passphrase (empty for no passphrase): — если хотим защитить наш файл ключа паролем (пароль именно на клиентский ключ!), если же хотим сделать файл ключа без пароля, то оставляем без ответа. ВАЖНО — ВОССТАНОВИТЬ ЗАБЫТЫЙ ПАРОЛЬ НЕВОЗМОЖНО;
- Enter same passphrase again: — повторяем пароль;
- После конца генерации, появляется два ключа:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.- id_ed25519 или id_rsa — приватный ключ пользователя;
- id_ed25519.pub или id_rsa.pub — публичный ключ сервера;
- Переходим в директорию пользователя, из под которого выполнялась генерация ключей:
cd ~/.ssh/ - Записываем авторизованные ключи.
Для ключа с алгоритмом Ed25519 команда будет выглядеть так:cat id_ed25519.pub >> authorized_keysА для ключа с алгоритмом RSA так:
cat id_rsa.pub >> authorized_keys - Копируем себе на компьютер файл id_ed25519 или id_rsa.
Настройка сервера SSH
- Открываем для редактирования /etc/ssh/sshd_config, и настраиваем там следующие параметры:
- Разрешаем авторизацию при помощи ключей:
PubkeyAuthentication yes - Путь где будут находиться ключи, с которыми можно соединяться:
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
- Разрешаем авторизацию при помощи ключей:
- Перезапускаем сервер SSH:
systemctl restart sshdВ дистрибутивах, использующих initd, команда для перезапуска будет выглядеть иначе:
/etc/init.d/ssh restart
Авторизация из Windows
Для авторизации из Windows будет рассмотрен вариант использования утилиты PuTTy. Для возможности использования ранее сгенерированного ключа с этой утилитой, сперва придется сконвертировать данный ключ в понятный PuTTY формат. Конвертация осуществляется при помощи программы PuTTYgen, которая идет в комплекте с PuTTY, а так же доступна для скачивания отдельно на сайте разработчика программы.
- Запускаем программу PuTTYgen, и выбираем в верхнем меню пункты Conversion — Import key.

- Если при генерации ключа вы указали пароль, для осуществления импорта ключа потребуется ввести его снова.
- После импорта ключа, можно сразу сохранить его в понятный для PuTTy формат, для этого нажимаем «Save private key», и сохраняем его в нужном месте.
Если нужно добавить, изменить или удалить пароль для ключа, то это можно сделать при помощи поля «Key passphrase», куда следует указать новый пароль, или удалить имеющийся. - Для авторизации по ключу, в PuTTY открываем нужное подключения, и переходим в левой панели по пути Connection — data. Здесь в поле autologin указываем имя пользователя, который будет использовать ранее сгенерированный ключ.

- Затем, переходим в настройки по пути Connection — SSH — Auth — Credentials (в старых версиях путь отличается: Connection — data — ssh — auth). Тут, в поле Private key file for authentication выбираем файл ключа.

- Проверяем соединение с хостом.
Завершение настройки сервера
Теперь, когда настройка выполнена и возможность подключения проверена, удаляем ранее имеющиеся на сервере файлы приватных ключей (id_ed25519 или id_rsa) и публичных ключей (id_ed25519.pub или id_rsa.pub).
Затем, открываем конфиг /etc/ssh/sshd_config меняем значение параметров «PasswordAuthentication» и «PermitEmptyPasswords» на «no«
PasswordAuthentication no PermitEmptyPasswords no
Перезапускаем сервер SSH с помощью команды systemctl:
systemctl restart sshd
Или, для дистрибутивов с init.d:
/etc/init.d/ssh restart

Добавить комментарий