Linux

Использование SSH-ключей для безопасного доступа к Linux-серверам

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

Обновлено 4 августа 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04Ubuntu 20.04Debian 11CentOS Stream 9

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

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

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

  • Операционная система: любая современная дистрибутивная система Linux (Ubuntu, Debian, CentOS и т.д.).
  • Права пользователя: необходимо иметь права sudo для редактирования /etc/ssh/sshd_config и перезапуска службы.
  • Инструменты: установлен SSH‑клиент (ssh, ssh-keygen, ssh-copy-id).
  • Сеть: возможность подключиться по SSH к целевому серверу (порт 22 должен быть открыт).

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

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

Создайте новую пару RSA‑ключей размером 4096 бит. Команда также позволяет добавить комментарий, чтобы отличить ключи на разных хостах.

ssh-keygen -t rsa -b 4096 -C 'comment@host'

Следуйте подсказкам мастера: укажите путь (по умолчанию ~/.ssh/id_rsa) и, при желании, защитите ключ фразой.

Шаг 2: Защита приватного ключа

Правила по умолчанию могут быть слишком открытыми. Установите строгие права, чтобы только вы могли работать с ключами.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

Шаг 3: Копирование публичного ключа на удалённый сервер

Самый простой способ — использовать ssh-copy-id. Утилита автоматически добавит публичный ключ в ~/.ssh/authorized_keys.

ssh-copy-id user@host

Если утилита недоступна, выполните ручную копию:

cat ~/.ssh/id_rsa.pub | ssh user@host 'cat >> ~/.ssh/authorized_keys'

Шаг 4: Проверка настройки сервера SSH

Убедитесь, что сервер настроен на использование публичных ключей. Откройте конфигурационный файл и найдите строку PubkeyAuthentication.

sudo nano /etc/ssh/sshd_config

Если строка закомментирована, раскомментируйте её и установите значение yes:

PubkeyAuthentication yes

Перезапустите службу, чтобы изменения вступили в силу:

sudo systemctl restart sshd

Шаг 5: Подключение с использованием ключа

Теперь вы можете подключаться без пароля:

ssh user@host

Если при приватном ключе установлена фраза, SSH‑клиент запросит её ввод один раз.

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

  • Успешное подключение: если терминал отображает приглашение user@host, всё работает.
  • Проверка ключа на сервере: на целевом хосте выполните команду cat ~/.ssh/authorized_keys — вы должны увидеть строку с вашим публичным ключом.
  • Тест без пароля: выполните ssh -i ~/.ssh/id_rsa user@host — пароль не потребуется.

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

  • Неправильные права доступа: если права на ~/.ssh не 700 или на authorized_keys не 600, SSH отклонит ключ. Исправьте права командами chmod 700 ~/.ssh и chmod 600 ~/.ssh/authorized_keys.
  • Отсутствие ssh-copy-id: используйте ручную копию, описанную в шаге 3.
  • PubkeyAuthentication no: отредактируйте /etc/ssh/sshd_config, установите yes и перезапустите sshd.
  • Блокировка брандмауэра: убедитесь, что порт 22 открыт на целевом хосте (iptables, firewalld или облачные группы безопасности).
  • Разные ключи: убедитесь, что вы копируете именно тот публичный ключ, который соответствует приватному (id_rsa.pub). Повторное копирование перезапишет старый ключ в authorized_keys.

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

Как сгенерировать SSH-ключ?
Как скопировать публичный ключ на сервер?
Что делать, если подключение с помощью ключа не работает?
Как удалить SSH-ключи?

Полезное

Генерация SSH-пары ключей
Защита приватного ключа
Копирование публичного ключа на удалённый сервер
Проверка настройки сервера SSH
Подключение с использованием ключа