Авторизация SSH по ключу в Linux

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

SSH авторизация по ключу - наиболее безопасный способ авторизации, значительно превосходящий по безопасности обычный метод авторизации по паролю. В этой небольшой статье, мы разберем, как реализовать авторизацию по SSH ключу на удаленном сервере под управлением операционной системы семейства Linux.

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

  1. Первым делом, заходим под нужного пользователя, для которого следует создать ключ. Это можно сделать на этапе логина в систему, или же воспользоваться утилитой su:
    su - [ИМЯ ПОЛЬЗОВАТЕЛЯ]
  2. Затем, генерируем ключ при помощи команды ssh-keygen. На более-менее современных системах, при генерации ключа следует указать использование алгоритма Ed25519:
    ssh-keygen -t ed25519 -a 100

    Для старых систем (где версия OpenSSH старее, чем OpenSSH 6.5), следует использовать RSA:

    ssh-keygen -t rsa -b 2048
  3. При генерации ключа вам будет задано несколько вопросов:
    • Enter file in which to save the key (/home/user/.ssh/id_rsa) - если нет необходимости сохранять в другое место сгенерированные файлы ключей, то оставляем без ответа;
    • Enter passphrase (empty for no passphrase): - если хотим защитить наш файл ключа паролем (пароль именно на клиентский ключ!), если же хотим сделать файл ключа без пароля, то оставляем без ответа. ВАЖНО - ВОССТАНОВИТЬ ЗАБЫТЫЙ ПАРОЛЬ НЕВОЗМОЖНО;
    • Enter same passphrase again: - повторяем пароль;
  4. После конца генерации, появляется два ключа:
    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 - публичный ключ сервера;
  5. Переходим в директорию пользователя, из под которого выполнялась генерация ключей:
    cd ~/.ssh/
  6. Записываем авторизованные ключи.
    Для ключа с алгоритмом Ed25519 команда будет выглядеть так:

    id_ed25519.pub >> authorized_keys

    А для ключа с алгоритмом RSA так:

    cat id_rsa.pub >> authorized_keys
  7. Копируем себе на компьютер файл id_ed25519 или id_rsa.

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

  1. Открываем для редактирования /etc/ssh/sshd_config, и настраиваем там следующие параметры:

    • Разрешаем авторизацию при помощи ключей:
      PubkeyAuthentication yes
    • Путь где будут находиться ключи, с которыми можно соединяться:
      AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
  2. Перезапускаем сервер SSH:
    systemctl restart sshd

    В дистрибутивах, использующих initd, команда для перезапуска будет выглядеть иначе:

    /etc/init.d/ssh restart

Авторизация из Windows

Для авторизации из Windows будет рассмотрен вариант использования утилиты PuTTy. Для возможности использования ранее сгенерированного ключа с этой утилитой, сперва придется сконвертировать данный ключ в понятный PuTTY формат. Конвертация осуществляется при помощи программы PuTTYgen, которая идет в комплекте с PuTTY, а так же доступна для скачивания отдельно на сайте разработчика программы.

  1. Запускаем программу PuTTYgen, и выбираем в верхнем меню пункты Conversion - Import key.
    puttygen1
  2. Если при генерации ключа вы указали пароль, для осуществления импорта ключа потребуется ввести его снова.
  3. После импорта ключа, можно сразу сохранить его в понятный для PuTTy формат, для этого нажимаем "Save private key", и сохраняем его в нужном месте.
    puttygen2

    Если нужно добавить, изменить или удалить пароль для ключа, то это можно сделать при помощи поля "Key passphrase", куда следует указать новый пароль, или удалить имеющийся.
  4. Для авторизации по ключу, в PuTTY открываем нужное подключения, и переходим в левой панели по пути Connection - data. Здесь в поле autologin указываем имя пользователя, который будет использовать ранее сгенерированный ключ.
    kitty1
  5. Затем, переходим в настройки по пути Connection - SSH - Auth - Credentials (в старых версиях путь отличается: Connection - data - ssh - auth). Тут, в поле Private key file for authentication выбираем файл ключа.
    kitty2
  6. Проверяем соединение с хостом.

Завершение настройки сервера

Теперь, когда настройка выполнена и возможность подключения проверена, удаляем ранее имеющиеся на сервере файлы приватных ключей (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
Была ли эта статья Вам полезна?

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.