Авторизация SSH по ключу в Linux
- Recluse
- 25.09.2014
- 13 380
- 0
- 02.02.2025
- 3
- 3
- 0

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 команда будет выглядеть так: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
Добавить комментарий