Linux

Настройка SSH-ключей для аутентификации на Linux за 5 минут

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

Обновлено 28 июня 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04, 22.04, 24.04Debian 11, 12CentOS 8, 9Fedora 38, 39

Введение / Зачем это нужно

Использование SSH-ключей вместо паролей значительно повышает безопасность удалённого доступа. Ключи устраняют риск угадывания паролей, позволяют автоматизировать сценарии и ускоряют процесс входа в систему. После настройки вы сможете подключаться к любому поддерживаемому хосту одним щелчком, не вводя пароль.

Требования / Подготовка

  • Операционные системы: Ubuntu 20.04+, Debian 11+, CentOS 8+, Fedora 38+
  • Права пользователя: Необходима учётная запись с правами sudo для редактирования SSH-конфигурации.
  • Предустановленные инструменты: ssh, ssh-keygen, ssh-copy-id (установляются через openssh-client/openssh-server).
  • Доступ к удалённому хосту: Уже имеющийся SSH-доступ к целевому серверу (можно с использованием пароля для начальной настройки).

Пошаговая инструкция

Шаг 1: Генерация SSH-ключей

Создайте пару ключей Ed25519 (рекомендуется) или RSA.

ssh-keygen -t ed25519 -C "my-linux-host"

Примите стандартное местоположение (~/.ssh/id_ed25519) и, при желании, защитите ключ фразой. Для RSA:

ssh-keygen -t rsa -b 4096 -C "my-linux-host"

Шаг 2: Копирование публичного ключа

Быстрее всего использовать ssh-copy-id.

ssh-copy-id user@host

При запросе введите пароль для удалённого хоста — утилита автоматически добавит ваш публичный ключ в ~/.ssh/authorized_keys.

Если ssh-copy-id недоступен, добавьте ключ вручную:

cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Шаг 3: Настройка доступа на сервере

Откройте файл конфигурации SSH:

sudo nano /etc/ssh/sshd_config

Убедитесь, что установлены следующие параметры (или добавьте их):

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Сохраните изменения (Ctrl+X, Y, Enter) и перезапустите службу:

sudo systemctl restart sshd

Шаг 4: Подключение без пароля

Теперь попробуйте подключиться:

ssh user@host

Подключение должно завершиться без запроса пароля.

Проверка результата

  • Успешный вход: Если вы вошли без запроса пароля, настройка прошла успешно.
  • Проверка ключа на сервере: На удалённом хосте выполните:
    ssh user@host "cat ~/.ssh/authorized_keys"
    

    Убедитесь, что отображается ваш публичный ключ.

Возможные проблемы

  • ssh: Could not publickey – Проверьте, что ключ добавлен в authorized_keys и права доступа 600.
  • Subsystem for sftp not found – Обе части настройки совпадают; ошибка часто появляется при использовании неправильного пользователя.
  • Permission denied (publickey) – Убедитесь, что файл ключа защищён (chmod 600 ~/.ssh/id_ed25519) и что сервер настроен на приём ключей (PubkeyAuthentication yes).
  • Задача завершилась с кодом 255 после ssh-copy-id – Проверьте пароль и права доступа на удалённом хосте; возможно, в .ssh отсутствуют правильные права (700).

Часто задаваемые вопросы

Зачем нужен SSH-ключ вместо пароля?
Можно ли использовать один и тот же ключ для нескольких серверов?
Что делать, если SSH не принимает ключ?
Как удалить SSH-ключ при необходимости?

Полезное

Генерация SSH-ключей
Копирование публичного ключа
Настройка доступа на сервере
Подключение без пароля

Эта статья помогла вам решить проблему?