Linux

Управление SSH-ключами в Linux: безопасная настройка и хранение

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

Обновлено 28 апреля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 22.04+Debian 11+CentOS 8 / AlmaLinux 8+OpenSSH 8.0+

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

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

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

  • Клиент и сервер с OpenSSH версии не ниже 8.0.
  • Ваш пользователь в Linux с правом записи в ~/.ssh.
  • Сетевой доступ к серверу по порту 22 (или кастомному) и разрешённый вход по ключам.
  • Базовые права на сервере: возможность редактировать ~/.ssh/authorized_keys.

Шаг 1: Сгенерировать новую пару SSH-ключей

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

ssh-keygen -t ed25519 -C "work-laptop-2026"
  • -t ed25519 — современный и безопасный алгоритм, предпочтительный для новых ключей.
  • -C добавляет комментарий, который поможет отличить ключи, если их будет несколько.

Скрипт предложит путь (по умолчанию ~/.ssh/id_ed25519) и парольную фразу. Если ключ будет использоваться скриптами без участия человека, пароль можно оставить пустым, но для интерактивных сессий обязательно задайте надёжную фразу.

Шаг 2: Настроить права доступа к каталогу и файлам

OpenSSH игнорирует ключи, если на них слишком мягкие права. Выполните:

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

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

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

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

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host

Если на сервере отключен вход по паролю или порт отличается от 22, укажите его явно:

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@host

При ручном добавлении скопируйте содержимое .pub и вставьте его в ~/.ssh/authorized_keys на сервере, затем выполните:

chmod 600 ~/.ssh/authorized_keys

Шаг 4: Настроить короткие алиасы через ~/.ssh/config

Создайте или отредактируйте ~/.ssh/config, чтобы не вводить длинные строки при каждом подключении:

Host work-server
    HostName 192.168.1.50
    User deploy
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Теперь достаточно набрать ssh work-server. Опция IdentitiesOnly yes предотвращает случайную отправку всех ключей и ускоряет аутентификацию.

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

Убедитесь, что ключ работает и не запрашивает пароль:

ssh -T work-server

Если вы используете несколько ключей, проверьте, какой именно предлагается серверу:

ssh -v work-server 2>&1 | grep "Offering public key"

Также полезно проверить права на сервере и наличие вашего ключа в authorized_keys.

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

  • «Permission denied (publickey)» — проверьте права на ~/.ssh и authorized_keys, а также наличие ключа в файле. Убедитесь, что в /etc/ssh/sshd_config разрешён PubkeyAuthentication yes.
  • Агент не предлагает ключ — запустите ssh-add ~/.ssh/id_ed25519 и убедитесь, что ssh-agent запущен.
  • Ключ игнорируется из-за слишком открытых прав — OpenSSH откажется использовать приватный ключ, если он доступен на запись другим пользователям. Исправьте права командами из шага 2.
  • Не работает вход по паролю после копирования ключа — проверьте PasswordAuthentication в конфиге сервера и перезапустите службу sshd.

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

Нужно ли защищать приватный ключ паролем, если он используется только локально?
Как добавить ключ для нескольких серверов и не путаться в именах?
Почему ssh-copy-id пишет «Permission denied» при копировании ключа?
Можно ли использовать один ключ для разных пользователей и серверов?

Полезное

Сгенерировать новую пару SSH-ключей
Настроить права доступа к каталогу и файлам
Скопировать публичный ключ на удалённый сервер
Настроить короткие алиасы через ~/.ssh/config

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