Linux

Генерация SSH-ключей в Linux: пошаговое руководство

В этом руководстве вы научитесь генерировать SSH-ключи на системе Linux, настроить ключевую пару для беспарольного доступа и использовать её с помощью ssh-keygen.

Обновлено 30 июня 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04Ubuntu 22.04Debian 11Fedora 36

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

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

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

  • OpenSSH клиент (ssh-keygen) установлен (обычно присутствует в базовых системах).
  • Права обычного пользователя (для генерации ключей не требуются привилегии root).
  • Базовое знание терминала и понимание путей ~/.ssh.

Если ssh-keygen отсутствует, установите пакет подходящий для вашего дистрибутива (см. шаг 1).

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

Шаг 1: Установка OpenSSH (если необходимо)

Если утилита ssh-keygen не найдена, выполните команду в терминале:

# Для Debian/Ubuntu
sudo apt update && sudo apt install -y openssh-client

# Для RHEL/Fedora/CentOS
sudo dnf install -y openssh-clients

После установки проверьте версию: ssh-keygen -v.

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

Откройте терминал и выполните команду генерации:

ssh-keygen -t rsa -b 4096 -C "user@example.com"
  • -t rsa — тип алгоритма (RSA).
  • -b 4096 — размер ключа (сильная защита).
  • -C — комментарий (удобно для идентификации).
  • Примите стандартное имя файла (Enter file in which to save the key) — обычно ~/.ssh/id_rsa.
  • Придумайте мастер-пароль для приватного ключа, если вас об этом попросят.

Шаг 3: Настройка прав доступа к ключам

По умолчанию SSH создает ключи с правами 644. Для безопасности измените их:

chmod 600 ~/.ssh/id_rsa          # только владелец может читать/писать
chmod 644 ~/.ssh/id_rsa.pub      # публичный ключ — только для чтения

Проверьте права:

ls -l ~/.ssh

Результат должен показывать rw------- для приватного ключа и rw-r--r-- для публичного.

Шаг 4: Передача открытого ключа на удалённый хост

Самый простой способ — использовать ssh-copy-id:

ssh-copy-id user@remote.example.com

Если скриптовый режим не доступен, скопируйте публичный ключ вручную:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Убедитесь, что файл authorized_keys имеет права 644 и принадлежит правильному пользователю.

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

Попробуйте беспарольное подключение:

ssh user@remote.example.com 'echo "Подключение успешно"'

Если вы видите сообщение Подключение успешно, SSH-аутентификация работает корректно.

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

  • Проверьте файл authorized_keys на целевом хосте: ls -l ~/.ssh/authorized_keys.
  • Проверьте логи SSH на сервере (/var/log/auth.log или journalctl -u sshd), чтобы убедиться в отсутствии ошибок аутентификации.
  • Проверьте локальный список агента: ssh-add -L должен содержать отпечаток вашего публичного ключа.

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

СимптомПричинаРешение
ssh-keygen: невозможно создать файлОтсутствует каталог ~/.ssh или права на записьСоздайте каталог mkdir -p ~/.ssh и установите права chmod 700 ~/.ssh
Permission denied (publickey)Неправильные права на приватный ключВыполните chmod 600 ~/.ssh/id_rsa
Invalid user при ssh-copy-idНеправильное имя пользователя на удалённом хостеПроверьте учётную запись на сервере (ssh user@host)
Signature invalidКлюч повреждён или использован в атакеУдалите старый ключ (rm ~/.ssh/id_rsa*) и сгенерируйте новый
Agent refused keyКлюч уже добавлен в агент или имеет дубликатВыполните ssh-agent bash, затем ssh-add ~/.ssh/id_rsa

Если проблема не решена, проверьте отпечаток ключа (ssh-keygen -l -f ~/.ssh/id_rsa.pub) и сравните с записью на сервере.

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

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

Полезное

Установка OpenSSH (если отсутствует)
Генерация SSH-ключевой пары
Настройка прав доступа к ключам
Передача открытого ключа на удалённый хост
Проверка подключения без пароля

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