Перейти к основному содержимому

Настройка аутентификации по SSH

SSH (Secure Shell) — это защищенный сетевой протокол, используемый для управления серверами и безопасной передачи данных. Аутентификация по SSH-ключам предоставляет безопасный альтернативный метод входа на сервер по сравнению с традиционным парольным входом.

Процесс настройки SSH-аутентификации показан на основе ключей на Linux-сервере.

Для подключения к виртуальной машине из внешней сети (Интернет) по протоколу SSH необходимо настроить правила на маршрутизаторе. Подробное описание можно посмотреть в разделе "Подключение к виртуальной машине через консоль".

Преимущества использования SSH-ключей

Основные преимущества использования SSH-ключей:

  • повышенная безопасность за счет криптографически сильных ключей;
  • устранение рисков, связанных со слабыми паролями;
  • возможность отключения входа по паролю, что снижает риск атак методом подбора;
  • удобство при использовании в сочетании с SSH-агентом.

Предварительные требования

Для аутентификации по SSH-ключам, необходимо:

  1. Клиентское устройство с операционной системой Linux, macOS или Windows (с установленным SSH-клиентом).
  2. Доступ к Linux-серверу с установленным SSH.
  3. Учетная запись на сервере с привилегиями sudo (для настройки сервера).
  4. Базовые знания работы с командной строкой.

Создание пары SSH-ключей

Для создания пары SSH-ключей, необходимо выполнить генерацию SSH-ключей (открытого и закрытого) на клиентском устройстве.

Для ОС Linux и macOS

  1. Открыть терминал.

  2. Выполнить команду:

    ssh-keygen -t ed25519
  3. Будет предложено:

    • указать путь для сохранения ключей (по умолчанию ~/.ssh/id_ed25519);
    • установить парольную фразу (рекомендуется для дополнительной безопасности).

Для ОС Windows

Вариант 1. Использование Windows Subsystem for Linux (WSL):

  1. Установить WSL

  2. Выполнить команду:

    ssh-keygen -t ed25519
  3. Будет предложено:

    • указать путь для сохранения ключей (по умолчанию ~/.ssh/id_ed25519);
    • Установить парольную фразу (рекомендуется для дополнительной безопасности).

Вариант 2. Использование Git Bash:

  1. Установить Git for Windows.

  2. Открыть Git Bash.

  3. Выполнить команду:

    ssh-keygen -t ed25519
  4. Будет предложено:

    • указать путь для сохранения ключей (по умолчанию ~/.ssh/id_ed25519);
    • установить парольную фразу (рекомендуется для дополнительной безопасности).

Вариант 3. Использование PuTTYgen:

  1. Скачать и установить PuTTY.
  2. Запустить PuTTYgen.
  3. Выбрать тип ключа (ed25519).
  4. Нажать "Generate" и перемещать мышь для создания энтропии.
  5. Сохранить оба ключа (открытый и закрытый).

Копирование открытого ключа на сервер

После создания ключей, необходимо скопировать открытый ключ на целевой сервер.

Использование метода ssh-copy-id (рекомендуется)

Если установлена утилита ssh-copy-id:

  1. Запустить утилиту ssh-copy-id.

  2. Выполнить команду:

    ssh-copy-id username@remote_server_ip
  3. Будет предложено ввести пароль пользователя. После успешного ввода открытый ключ будет автоматически добавлен в файл ~/.ssh/authorized_keys на сервере.

Ручное копирование ключа

Если утилита ssh-copy-id не установлена, необходимо:

  1. Отобразить содержимое открытого ключа:

    cat ~/.ssh/id_ed25519.pub
  2. Скопировать вывод команды.

  3. Подключиться к серверу по SSH:

    ssh username@remote_server_ip

  4. Создать каталог .ssh (если его не существует) и установить права:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
  5. Добавить ключ в authorized_keys:

    echo "скопированный_ключ" >> ~/.ssh/authorized_keys
  6. Установить права доступа:

    chmod 600 ~/.ssh/authorized_keys

Аутентификация на сервере с помощью SSH-ключа

Для подключения к серверу:

  1. Выполнить команду:

    ssh username@remote_server_ip
Важно!

Если установлена парольная фраза, то при создании ключа, будет предложено ввести ее. Для удобства можно использовать SSH-агент для хранения фразы в сеансе.

Настройка SSH-агента

Для OC Linux и macOS

  1. Для запуска SSH-агента:

В командной строке ввести:

eval "$(ssh-agent -s)"
  1. Для добавления ключа ввести команду:

    ssh-add ~/.ssh/id_rsa

Для ОС Windows

  1. Запустить Git Bash.

  2. Ввести команду для запуска SSH-агента:

    eval $(ssh-agent -s)
  3. Для добавления ключа ввести команду:

    ssh-add ~/.ssh/id_rsa

Отключение аутентификации по паролю

Важно!

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

Внимание!

Убедитесь, что можно выполнить вход на сервер с помощью SSH-ключа, прежде чем отключить аутентификацию по паролю!

Для отключения аутентификации по паролю, необходимо:

  1. Подключиться к серверу, выполнив команду:

    ssh username@remote_server_ip
  2. Открыть файл конфигурации SSH, выполнив команду:

    sudo nano /etc/ssh/sshd_config
  3. Найти и изменить следующие директивы:

    PasswordAuthentication no
    PermitEmptyPasswords no
    ChallengeResponseAuthentication no
    UsePAM no
  4. Сохранить изменения и перезагрузить SSH, выполнив команду:

    sudo systemctl reload sshd
  5. Проверить подключение в новом терминале, не закрывая текущее соединение.